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

  • Hak5DarrensVlog

    Hak5DarrensV

    11 EYLÜL 2009
  • LounaTutorials

    LounaTutoria

    10 EYLÜL 2009
  • videoisunrelated

    videoisunrel

    5 Mart 2009