正如本网站上的另一个问题所述,这样的事情是不合法的:
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 doSomething() { return Integer.class; }
},
BAR {
public Class doSomething() { return String.class; }
};
public Class> doSomething();
}
这里,所有三个返回Class对象,但各个常量比整个枚举类型“更具体”……