java我想扩展枚举和对象(通用)
Enum
在java.lang.Enum
中,而Object
在java.lang.Object
中。那么,为什么Enum
不是Object
?(我得到一个^{
我想创建一个既能接受Object
又能接受Enum
的类,就像这样
public class MyType<T extends Enum<T>, Object> {
但这会导致编译错误。如何使我的MyType
能够接受所有(或两者)类型的类?(Enum
或Object
)
你可以在下面搜索框中键入要查询的问题!
Enum
在java.lang.Enum
中,而Object
在java.lang.Object
中。那么,为什么Enum
不是Object
?(我得到一个^{
我想创建一个既能接受Object
又能接受Enum
的类,就像这样
public class MyType<T extends Enum<T>, Object> {
但这会导致编译错误。如何使我的MyType
能够接受所有(或两者)类型的类?(Enum
或Object
)
# 1 楼答案
枚举是一个对象。见http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Enum.html 所以
应该有用
# 2 楼答案
你可以在documentation上看到:
你可以得出以下结论:
Object
扩展李>Object
是一种表示其他类的图形方式,那么您将无法使用它,因为java不支持多重继承李># 3 楼答案
通过查看class object的API,您可以阅读:
这意味着
Enum
是一个对象(您也可以通过查看Enum的JavaDocs来验证这一点)。因此,如果您只是告诉MyType
包含对象(MyType<Object>
),它将接受您最初发布的对象和枚举尽管请注意,这可能会导致不必要的行为,并且被认为是不安全的,因为所有类都是对象
# 4 楼答案
我认为你的问题说得不对。我想你希望你的班级接受
Enum
或Object
。当你这样说的时候,你会发现这是唯一可能的选择如果你想让它接受
Enum
和Object
,这相当于说“接受Enum
”。在这种情况下>;这就是答案# 5 楼答案
因为每个Java对象都是
instanceof Object
,所以没有什么比无边界地声明MyType<?>
更好的了。它将捕获任何类型,包括枚举类型