gpt4 book ai didi

java - 如何在java泛型中为类型参数定义静态字段

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:12 25 4
gpt4 key购买 nike

我想定义一个这样的时间接口(interface):

public interface TimeInterface<T>
{
static T ZERO;
static T INFINITY;
// some other methods...
}

这是否可能,或者如何避免错误?

提前致谢!

最佳答案

来自javadoc直接:

我们不能声明类型为类型参数的静态字段

类的静态字段是类的所有非静态对象共享的类级变量。因此,类型参数的静态字段是不允许的。考虑以下类:

public class MobileDevice<T> {
private static T os;

// ...
}

如果允许类型参数的静态字段,那么下面的代码会很困惑:

MobileDevice<Smartphone> phone = new MobileDevice<>();
MobileDevice<Pager> pager = new MobileDevice<>();
MobileDevice<TabletPC> pc = new MobileDevice<>();

因为phone、pager、pc共享静态字段os,那么os的实际类型是什么?它不能同时是 Smartphone、Pager 和 TabletPC。因此,您不能创建类型参数的静态字段。

关于java - 如何在java泛型中为类型参数定义静态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31263222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com