2016-09-05 6 views
1

Normalerweise, wenn eine Klasse Comparable implementiert, die Variable vom Typ T ist der Klassenname, zB StringComparable<String> implementiert, LongComparable<Long> implementiert, Date implementiert Comparable<Date>, warum dann Enum Geräte Comparable<E> nicht Comparable<Enum<E>>?Enum implementiert Vergleichbare <E> warum nicht Vergleichbare <Enum<E>>

+2

Ich vermute, das ist Fallout von http://stackoverflow.com/questions/3061759/why-in-java-enum-is-declared-as-enume-extends-enume. –

Antwort

2

E ist ein Enum<E> bereits.

Der Grund, warum es nicht sein kann Enum<E> als das bedeutet, dass Enum<E> vergleichbar ist, die nur E akzeptabel ist.

+0

Sir, können Sie genauer gesagt in der kann nicht 'Enum user2018791

+0

@ user2018791 Enum ist nicht so restriktiv wie es sein sollte. –

0

Es ist, weil die enum Klasse als

public abstract class Enum<E extends Enum<E>> ... 

So definiert die E ist bereits ein Enum<E>, und nachdem er sie implementieren Comparable<E> bereits implizit die Enum Teil im Inneren hat.

Sie könnten für weitere Informationen auf this question suchen, warum es auf diese rekursive Weise erklärt wird (weil es eher das Gehirn verletzt).

+0

Was könnte falsch sein, wenn 'Enum' 'Comparable > '? – user2018791

Verwandte Themen