Java Enum<T> vs T 作为变量类型
2022-09-04 01:05:07
本声明之间有什么区别吗?
Thread.State state = Thread.State.NEW;
并且
Enum<Thread.State> state = Thread.State.NEW;
在爪哇?而不是第二个选项是更长一点?
本声明之间有什么区别吗?
Thread.State state = Thread.State.NEW;
并且
Enum<Thread.State> state = Thread.State.NEW;
在爪哇?而不是第二个选项是更长一点?
这与比较以下情况相同:
Child o = someChild;
和
Parent o = someChild;
Enum
是所有枚举类型的父类。因此,对于第二行,代码不能包含对 的特定成员的引用,特别是语言规范的这一节中描述的成员。Thread.State
有什么区别吗....
在实践中,在这种特殊情况下,可能没有。
从理论上讲,是 的子类型。如果声明了(非私有)字段或方法,则可以通过 的第一个声明使用它们,但不能通过第二个声明使用它们。Thread.State
Enum<Thread.State>
Thread.State
state
一般来说,第一种形式是优选的...出于这个原因。
另外,我不认为你能够通过第二个声明中声明的变量看到枚举的方法;例如:static
values()
valueOf
state.valueOf("BLOCKED")
但是,通过实例引用调用静态方法是不好的。