logo

Java örneği

  1. Java örneği
  2. Örnek operatörü örneği
  3. Instanceof operatörünü boş değere sahip bir değişkenle uygulamak
  4. Instanceof operatörüyle downcasting
  5. Örnek operatörü olmadan indirgeme

Java örneği operatörü nesnenin belirtilen türün (sınıf, alt sınıf veya arayüz) bir örneği olup olmadığını test etmek için kullanılır.

Java'daki Instanceof aynı zamanda type olarak da bilinir. karşılaştırma operatörü çünkü örneği türle karşılaştırır. Doğru ya da yanlış değerini döndürür. Instanceof operatörünü null değeri olan herhangi bir değişkene uygularsak false değerini döndürür.

Java örneğinin basit örneği

Geçerli sınıfı test ettiği basit örnek operatör örneğini görelim.

 class Simple1{ public static void main(String args[]){ Simple1 s=new Simple1(); System.out.println(s instanceof Simple1);//true } } 
Şimdi Test Edin
 Output:true 

Alt sınıf türündeki bir nesne aynı zamanda bir üst sınıf türüdür. Örneğin, eğer Dog Animal'ı genişletirse Dog'un nesnesine Dog veya Animal sınıfı tarafından başvurulabilir.

Başka bir Java örneği operatörü örneği

 class Animal{} class Dog1 extends Animal{//Dog inherits Animal public static void main(String args[]){ Dog1 d=new Dog1(); System.out.println(d instanceof Animal);//true } } 
Şimdi Test Edin
 Output:true 

null değere sahip bir değişkenle Java'da Instanceof

Instanceof operatörünü null değere sahip bir değişkenle uygularsak false değerini döndürür. Aşağıda null değere sahip değişkenle exampleof operatörünü uyguladığımız örneğe bakalım.

 class Dog2{ public static void main(String args[]){ Dog2 d=null; System.out.println(d instanceof Dog2);//false } } 
Şimdi Test Edin
 Output:false 

Java Instanceof operatörü ile downcasting

Alt sınıf türü, Parent sınıfının nesnesine atıfta bulunduğunda, buna aşağı yayın denir. Direkt olarak yaparsak derleyici Derleme hatası verir. Bunu typecasting ile gerçekleştirirseniz, çalışma zamanında ClassCastException oluşturulur. Ancak exampleof operatörünü kullanırsak downcasting mümkündür.

 Dog d=new Animal();//Compilation error 

Aşağıya indirmeyi typecasting ile gerçekleştirirsek, çalışma zamanında ClassCastException oluşturulur.

 Dog d=(Dog)new Animal(); //Compiles successfully but ClassCastException is thrown at runtime 

Instanceof ile downcasting imkanı

Instanceof operatörü tarafından aşağı yayının mümkün olduğu örneği görelim.

 class Animal { } class Dog3 extends Animal { static void method(Animal a) { if(a instanceof Dog3){ Dog3 d=(Dog3)a;//downcasting System.out.println('ok downcasting performed'); } } public static void main (String [] args) { Animal a=new Dog3(); Dog3.method(a); } } 
Şimdi Test Edin
 Output:ok downcasting performed 

Java Instanceof kullanılmadan downcasting

Aşağıya indirme, aşağıdaki örnekte gösterildiği gibi exampleof operatörü kullanılmadan da gerçekleştirilebilir:

 class Animal { } class Dog4 extends Animal { static void method(Animal a) { Dog4 d=(Dog4)a;//downcasting System.out.println('ok downcasting performed'); } public static void main (String [] args) { Animal a=new Dog4(); Dog4.method(a); } } 
Şimdi Test Edin
 Output:ok downcasting performed 

Şimdi buna daha yakından bakalım, a ile gösterilen asıl nesne Dog sınıfının bir nesnesidir. Yani eğer onu küçümsersek sorun olmaz. Ama şunu yazarsak ne olur:

 Animal a=new Animal(); Dog.method(a); //Now ClassCastException but not in case of instanceof operator 

Java'da exampleof'un gerçek kullanımını anlamak

Aşağıda verilen örnekle exampleof anahtar sözcüğünün gerçek kullanımını görelim.

 interface Printable{} class A implements Printable{ public void a(){System.out.println('a method');} } class B implements Printable{ public void b(){System.out.println('b method');} } class Call{ void invoke(Printable p){//upcasting if(p instanceof A){ A a=(A)p;//Downcasting a.a(); } if(p instanceof B){ B b=(B)p;//Downcasting b.b(); } } }//end of Call class class Test4{ public static void main(String args[]){ Printable p=new B(); Call c=new Call(); c.invoke(p); } } 
Şimdi Test Edin
 Output: b method