java是否可能使用枚举参数化方法的返回类型?
在java中,我知道可以:
static <T> void fromArrayToCollection(T[] a, Collection<T> c) {
for (T o : a) {
c.add(o); // Correct
}
}
在我的场景中,我有一个可以为其检索值的不同设置的枚举,其中每个设置都有不同的值类型。我想在枚举中指定这些值类型,并获得类似于上述内容的编译时检查
这是一个带有运行时检查的版本——编译时检查可能吗
public class Foo {
public static enum ClientSetting {
SOME_STRING_SETTING(String.class),
SOME_INTEGER_SETTING(Integer.class);
private Class valueClass;
ClientSetting(Class valueClass) {
this.valueClass = valueClass;
}
}
public static <T> T get(ClientSetting bar) {
if (bar.valueClass.equals(String.class))
return (T) "My string value.";
else if (bar.valueClass.equals(Integer.class))
return (T) new Integer(2);
else
return null; // unreachable if every possibility is checked
}
public static void main(String[] args) {
String stringValue = get(ClientSetting.SOME_STRING_SETTING);
Integer integerValue = get(ClientSetting.SOME_INTEGER_SETTING);
}
}
谢谢
# 1 楼答案
我不确定这是否会有帮助,但如果你在客户端设置一个通用的呢?你可以传递
ClientSetting<String>
或ClientSetting<Integer>
。假设您是针对其中一个特定的代码编写的,则会进行一些编译时检查# 2 楼答案
dacc,你喜欢这个工作吗