1

未定義の型パラメーターでジェネリック型を拡張することは不可能ではありませんか ex:

class Foo extends enum<E>

彼らはそれをどのように拡張しますか?

編集:また、values() メソッドはどこで定義されていますか?

前もって感謝します

4

1 に答える 1

5

未定義の型パラメーターを使用してジェネリック型を拡張することは、実際には違法です。ただし、列挙型はそうしません。一部の Java コードを逆コンパイルしていて、<E>そこに (そして列挙型の名前が付けられていないE) が表示された場合、逆コンパイラはジェネリックを適切に処理していません。

列挙型は暗黙的に extends しEnum<YourEnumType>ます。つまり、コンパイラは暗黙的にclass YourEnumType extends Enum<YourEnumType>. 独自の型を渡すことで、や関数が異なる型の値を拒否Enumできるようになります。compareTovalueOfenum

于 2012-04-22T02:07:20.507 に答える