a
b
'un bir alt sınıfı olup olmadığını test nasıl?Bir java sınıfının çalışma zamanında başka bir tane mi uzattığı nasıl test edilir?
Class<?> a = A.class;
Class<?> b = B.class;
a
b
'un bir alt sınıfı olup olmadığını test nasıl?Bir java sınıfının çalışma zamanında başka bir tane mi uzattığı nasıl test edilir?
Class<?> a = A.class;
Class<?> b = B.class;
Eğer arıyorsunuz:
Super.class.isAssignableFrom(Sub.class)
Bir Class
başka uzanır olsun veya olmasın öğrenmek istiyorsanız, Class#isAssignableFrom(Class) kullanın. senin Örneğin, olurdu: Bir örneği belirli bir türdeki olup olmadığı ilgileniyorsanız, instanceof
kullanmak
if(B.class.isAssignableFrom(A.class)) { ... }
:
A obj = new A();
if(obj instanceof B) { ... }
Not bu takdirde true
dönecek sınıf/örnek türü hiyerarşinin bir üyesidir ve üst sınıf/alt sınıf ilişkilerini yönlendirmek için kısıtlayıcı değildir. Örneğin: yanı
// if A.class extends B.class, and B.class extends C.class
C.class.isAssignableFrom(A.class); // evaluates to true
// ...and...
new A() instanceof C; // evaluates to true
doğrudan üst sınıf/alt sınıf ilişkileri için kontrol etmek istiyorsanız
, Tim has provided an answer.Aslında, B.class.isAssignableFrom (A.class), A'nın B alt sınıfının olup olmadığını bilmek istediğinden beri. – meriton
Ah evet, bunu değiştireceğim. Genellikle örnekler diğer yoldan çıkar (B'yi uzatır). –
tricked ya; -p Ayrıntılı cevap için çok teşekkürler; Merintonu kabul ediyorum, en açık IMO olduğu gibi. – Armand
bilmek istiyor a
is assignable fromb
eğer:
b.isAssignableFrom(a);
Ayrıca, a
b
doğrudan alt sınıf olduğunu bilmek istiyorum: cevap için
a.getSuperclass().equals(b);
Cevabınız için teşekkürler ve sorudan “a” ve “b” yi kullandığınız için teşekkürler. – Armand
teşekkürler! – trusktr