0

前の質問のとおり、 Angelika Dissecting Enumの記事を読んでいます。タイプはそのサブタイプに対してのみインスタンス化でき、サブタイプはいくつかの一般的なメソッドを継承するという点を除けば、記事を理解できません。

  1. このように宣言された抽象 Enum クラスの意味は何ですか? どのように役立ちますか?
  2. 最後の部分のドキュメントでは 3 つの側面について説明しましたが、誰か簡単な言葉で説明してもらえますか?
  3. コード スケッチで、Enum クラスがcompareToメソッドを宣言していることがわかります。Enum が暗黙的に を実装している場合Comparable interface。なぜ独自のcompareToメソッドを定義する必要があるのですか?
  4. 再帰ジェネリックの概念のようです。再帰ジェネリックとは正確にはどういう意味ですか? 少し研究開発を行い、最後の質問への回答を理解した後、クラスをそれ自体でパラメーター化する必要があることを理解しました。

それでも、詳細な説明は役に立ちます。

4

2 に答える 2

2

ジェネリック型をそのまま宣言する主な利点Type<E extends Type<E>>は、そのようなジェネリッククラスがサブクラスを作成して、サブタイプの型で引数を返すか受け入れるメソッドを継承することだと思います。そのようなメソッドは次のjava.lang.Enumとおりです。

public final int compareTo( E o) { ... }
public final Class< E > getDeclaringClass() { ... }

したがって、 enum を宣言するColorと、暗黙的に次のようになります。

public class Color extends Enum<Color>

したがって、この型パラメーターのインスタンス化でEnumE、型引数が割り当てられるColorため、上記のメソッドは次のようになります。

public final int compareTo(Color o) { ... }
public final Class<Color> getDeclaringClass() { ... }
于 2013-08-27T15:59:33.880 に答える