我知道不可能将泛型与Enums一起使用,但是我正在寻找一种方法来实现具有不同返回类型的枚举的方法。
例如,我有以下枚举:
enum TestEnum {
TEST_INTEGER() {
@Override
public Integer getValue() {
return 123;
}
},
TEST_STRING() {
@Override
public String getValue() {
return "Test";
}
};
public abstract Object getValue();
}
在这种情况下TEST_INTEGER
,TEST_STRING
是的实现TestEnum
。这就是为什么该方法getValue()
具有返回类型Object
而不是返回类型,Integer
或者调用String
时的getValue()
原因。这意味着在每种情况下我都必须转换为相关的Classtype。
有没有更好的方法来直接获得不同的Classtype?
是的,java允许“减少”返回类型(请参阅此处)。
但是在您的上下文中,从概念上讲这是没有意义的!
考虑到
TestEnum someEnum = ...
Integer val = someEnum.getValue();
编译器应该如何知道您实际上已将哪个枚举常量分配给该值?
因此,编译器只能理解:
Integer val = TestEnum.TEST_INTEGER.getValue();
但是好了,如果你只知道它是一些TestEnum的情况下,你正在处理?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句