正如本网站上的另一个问题所述,这样的事情是不合法的:
public enum MyEnum {
FOO {
public Integer doSomething() { return (Integer) super.doSomething(); }
},
BAR {
public String doSomething() { return (String) super.doSomething(); }
};
public Object doSomething();
}
这是由于协变返回类型显然不适用于枚举常量(再次打破枚举常量是枚举类型的单例子类的错觉......)那么,我们添加一些泛型怎么样:这合法吗?
public enum MyEnum2 {
FOO {
public Class<Integer> doSomething() { return Integer.class; }
},
BAR {
public Class<String> doSomething() { return String.class; }
};
public Class<?> doSomething();
}
在这里,所有三个返回Class
对象,但单个常量比整个枚举类型“更具体”......