[英]Angelika Langer Enum<E extends Enum<E>> decoding
根據我的上一個問題 ,我正在閱讀Angelika Dissecting Enum的文章。 除了只能針對其子類型實例化類型並且這些子類型確實繼承了一些通用方法的要點外,我無法理解本文。
compareTo
方法。 當Enum隱式實現Comparable interface
。 為什么需要定義自己的compareTo
方法? 盡管如此,詳細的解釋還是有用的。
我認為在Type<E extends Type<E>>
時聲明泛型類型的主要好處是,此類泛型類將使子類繼承方法,該方法返回或接受具有子類型類型的參數。 java.lang.Enum
中的此類方法是:
public final int compareTo( E o) { ... }
public final Class< E > getDeclaringClass() { ... }
因此,如果我們聲明枚舉Color
,則意味着:
public class Color extends Enum<Color>
因此,在此Enum
實例化中,類型參數E
被分配了類型參數Color
,因此上述方法將如下所示:
public final int compareTo(Color o) { ... }
public final Class<Color> getDeclaringClass() { ... }
當說類似Enum<Color extends Enum<Color>>
時,聽起來好像您在聲明一個泛型類型參數Color
,以確保它使用匹配Color
的類型參數擴展Enum
。
但這不是為類聲明泛型類型參數的地方。 您必須在類名旁邊聲明它們; 您只能稍后在extends
子句中使用它們。 例如
// Use "extends" here ... not here.
public class MyClass<E extends MyClass<E>> extends MySuperClass<E>
在此示例中,您將Color
類聲明為Enum
上已經定義的通用類型參數的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.