2013-07-19 17 views

Odpowiedz

10

Dlaczego nie tylko Class<? extends Enum> e = Types.class;?

UPD: Dam ci bardziej wyjaśnioną odpowiedź, dlaczego twój kod nie działa.

Po pierwsze, typ wyrażenia Types.class to Class<Types>, a zmienna e to Class<Enum>.

Według JLS 5.5.1 takich typów (tj Class<Types> i Class<Enum>) są provably różne typy (JLS 4.5), a ich skreślenia są takie same (tylko Class), więc w tym przypadku jest to kompilacji Błąd podczas próby rzucić od Class<Types> do Class<Enum>.

+0

+1 To naprawdę działa? To nie jest tylko wymyślone? ;) –

+0

@PeterLawrey tak, to naprawdę działa :) – Andremoniy

+0

Dzięki! Ale dlaczego moje enum nie ma Enum? – ceving

Powiązane problemy