SORU
16 EKİM 2010, CUMARTESİ


java: Sınıf.isİnstance vs Sınıf.isAssignableFrom

clazz Class biraz olsun ve obj Object.

clazz.isAssignableFrom(obj.getClass())

her zaman olduğu gibi

clazz.isInstance(obj)

?

Farkları nelerdir?

CEVAP
8 AĞUSTOS 2011, PAZARTESİ


Her iki cevap da kapsıyor ama ne tam bir cevaptır.

MyClass.class.isInstance(obj) örnek kontrol eder. Parametre n olmayan boş ise true değerini döndürür ve ClassCastException bir yükseltme olmadan MyClass çevirebilirsiniz. Diğer bir deyişle, n MyClass veya onun alt sınıflarından bir örneğidir.

MyClass.class.isAssignableFrom(Other.class) MyClass aynı veya bir üst sınıf ise true döndürür ya da, Other superinterface. Other bir sınıf veya arabirim olabilir. Other MyClass dönüştürülebilir eğer doğru cevaplar.

Küçük bir kod göstermek için:

public class NewMain
{
    public static void main(String[] args)
    {
        NewMain nm = new NewMain();
        nm.doit();
    }

    public void doit()
    {
        A myA = new A();
        B myB = new B();
        A[] aArr = new A[0];
        B[] bArr = new B[0];

        System.out.println("b instanceof a: "   (myB instanceof A));
        System.out.println("b isInstance a: "   A.class.isInstance(myB));
        System.out.println("a isInstance b: "   B.class.isInstance(myA));
        System.out.println("b isAssignableFrom a: "   A.class.isAssignableFrom(B.class));
        System.out.println("a isAssignableFrom b: "   B.class.isAssignableFrom(A.class));
        System.out.println("bArr isInstance A: "   A.class.isInstance(bArr));
        System.out.println("bArr isInstance aArr: "   aArr.getClass().isInstance(bArr));
        System.out.println("bArr isAssignableFrom aArr: "   aArr.getClass().isAssignableFrom(bArr.getClass()));
    }

    class A
    {
    }

    class B extends A
    {
    }
}

Ve çıktı:

b instanceof a: true
b isInstance a: true
a isInstance b: false
b isAssignableFrom a: true
a isAssignableFrom b: false
bArr isInstance A: false
bArr isInstance aArr: true
bArr isAssignableFrom aArr: true

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • andony5589

    andony5589

    7 Aralık 2011
  • The Weavers of Eternity Paracord Tutorials

    The Weavers

    1 Ocak 2014
  • YEAH1TV

    YEAH1TV

    19 ŞUBAT 2009