2016-06-23 41 views
5

Aşağıdaki kod ile bir uyarı alıyorum neden anlamıyorum: ham tip java.lang.ClassNeden denetlenmeyen bir uyarı alıyorum?

üyesi olarak isAssignableFrom(Class<?>) için

public static boolean isAssignableFrom(Class clazz, Object o) { 
    return clazz.isAssignableFrom(o.getClass()); 
} 

denetlenmeyen çağrı ı isInstance kullandığınızda yöntem yerine (anladığımdan itibaren aynı sonuçları verir), bir uyarı alamıyorum:

public static boolean isAssignableFrom(Class clazz, Object o) { 
    return clazz.isInstance(o); 
} 

cevap

2

Class genel bir türüdür ve Java'ya Object sınıfının bir örneği olması gerektiğini söylemiyorsunuz.

public static <C> boolean isAssignableFrom(Class<C> clazz, C o) 
+0

teşekkür gibi bir şeye

public static boolean isAssignableFrom(Class clazz, Object o) 

değiştirin! Cevap açıklığa kavuşturuldu. Ancak, çalışma zamanında herhangi bir nesneyle kontrol edebilmek için bir tür parametresi kullanmak yerine 'Object o' yerine yerinde bırakmak daha iyi olurdu, değil mi? – Revolutionair

+0

Gerçekten de, silme işleminden sonra kod çalışma zamanında aynıdır (örneğimde örtük bir yayın vardır). –

+0

Diyelim ki 3 tane dersim var: "Ana", "Çocuk, Ebeveyn" i, "RandomClass" ı genişletiyor. Tip parametresi ile çocuğun Ana Babadan atanabilir olup olmadığını kontrol edebilirdim ancak RandomClass ('isAssignableFrom (Parent.class, new RandomClass());') – Revolutionair