Bir sınıf olmadığını kontrol edin Java başka bir sınıfın alt sınıfı
Java yansıma API ile oynamak ve bazı alanları işlemek için çalışıyorum. Şimdi benim alanlarını tipi belirleme ile kaldım. Dizeleri yap myField.getType().equals(String.class)
kolay. Aynı olmayan türetilen diğer sınıflar için de geçerlidir. Ama nasıl türetilmiş sınıfları kontrol edebilirim? E. g. List
alt LinkedList
. isSubclassOf(...)
extends(...)
herhangi bir yöntem bulamadım. getSuperClass()
tüm yürümek ve benim kendi benim supeclass bulmak gerekiyor mu?
Teşekkürler!
craesh
CEVAP
Bu yöntem istiyorum:
boolean isList = List.class.isAssignableFrom(myClass);
Eğer sınıf veya arabirim
Class
bu nesne tarafından temsil edilir ya da aynı olup olmadığını belirler, ya da bir üst sınıf olduğunu ve superinterface, sınıf veya arabirimClass
belirtilen parametre ile temsil etti.true
eğer öyleyse döndürür; aksi haldefalse
döndürür.Class
bu nesne ilkel bir türü temsil ediyorsa, bu yöntem eğerClass
belirtilen parametre tam olarakClass
bu nesnetrue
döndürür, aksi takdirdefalse
döndürür.
Referans:
İlgili:
a) bir Nesne olmadığını Kontrol edin Sınıfının bir örneği veya derleme zamanında biliyorsun Arayüzü (alt sınıflar da dahil olmak üzere)
boolean isInstance = someObject instanceof SomeTypeOrInterface;
Örnek:
assertTrue(Arrays.asList("a", "b", "c") instanceof List<?>);
b) bir Nesne olmadığını Kontrol edin. bir Sınıf veya Arayüz örneği (alt sınıflar da dahil olmak üzere) yalnızca çalışma zamanında biliyorum:
Class<?> typeOrInterface = // acquire class somehow
boolean isInstance = typeOrInterface.isInstance(someObject);
Örnek:
public boolean checkForType(Object candidate, Class<?> type){
return type.isInstance(candidate);
}
Zayıf Bağlantı - eğer bir sınıf mevcut...
Java, bir dize null ve boş olup olmadı...
Eğer bir sınıf, genel bir sınıftan tür...
Bir dizi başka bir alt kümesi olup olm...
Sınıf olmadığını kontrol edin zaten ek...