SORU
3 Ocak 2011, PAZARTESİ


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
3 Ocak 2011, PAZARTESİ


Bu yöntem istiyorum:

boolean isList = List.class.isAssignableFrom(myClass);

JavaDoc:

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 arabirim Class belirtilen parametre ile temsil etti. true eğer öyleyse döndürür; aksi halde false döndürür. Class bu nesne ilkel bir türü temsil ediyorsa, bu yöntem eğer Class belirtilen parametre tam olarak Class bu nesne true döndürür, aksi takdirde false 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);
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • buttheadgsxr1000

    buttheadgsxr

    24 Ocak 2008
  • humanHardDrive

    humanHardDri

    16 Mart 2011
  • William Sledd

    William Sled

    24 EYLÜL 2006