2013-07-19 26 views
5

Bu çalıştı:Sadece enum sınıflarını içerebilen bir değişken nasıl bildirilir?

public static enum Types { A, B, C } 
Class<Enum> e = Types.class; 

Ama bir "uyumsuz türleri" hatası alıyorum:

found : java.lang.Class<id.Types> 
required: java.lang.Class<java.lang.Enum> 
    Class<Enum> e = Types.class; 

olarak bildiğim kadarıyla bütün çeteleler Enum devralır. Enum neden Enum ile uyumlu değil?

cevap

10

Neden sadece Class<? extends Enum> e = Types.class;?

UPD: Size daha açıklanmış bir yanıt vereceğim, neden kodunuz çalışmıyor? Her şeyden

Öncelikle ifade Types.class tipi Class<Types> ise ve değişken eClass<Enum> olduğunu. JLS 5.5.1 böyle tipler (yani Class<Types> ve Class<Enum>) göre

kanıtlanabilir farklı türleri (JLS 4.5) vardır ve bu durumda size Class<Types> döküm çalışırken hata derleme zamanı yani onların silmeler (sadece Class) aynıdır Class<Enum>.

+0

+1 Gerçekten işe yarıyor mu? Sadece uydurulmuş değil mi? ;) –

+0

@PeterLawrey evet, gerçekten çalışıyor :) – Andremoniy

+0

Teşekkürler! Ama neden benim numaram Enum değil? – ceving

İlgili konular