このサイトの別の質問で述べたように、次のようなものは合法ではありません。
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();
}
ここでは、3 つすべてがオブジェクトを返しClass
ますが、個々の定数は列挙型全体よりも「より具体的」です...