未定義の型パラメーターでジェネリック型を拡張することは不可能ではありませんか ex:
class Foo extends enum<E>
彼らはそれをどのように拡張しますか?
編集:また、values() メソッドはどこで定義されていますか?
前もって感謝します
未定義の型パラメーターを使用してジェネリック型を拡張することは、実際には違法です。ただし、列挙型はそうしません。一部の Java コードを逆コンパイルしていて、<E>
そこに (そして列挙型の名前が付けられていないE
) が表示された場合、逆コンパイラはジェネリックを適切に処理していません。
列挙型は暗黙的に extends しEnum<YourEnumType>
ます。つまり、コンパイラは暗黙的にclass YourEnumType extends Enum<YourEnumType>
. 独自の型を渡すことで、や関数が異なる型の値を拒否Enum
できるようになります。compareTo
valueOf
enum