14 Temmuz 2015, Salı
'' operatör örneğin farklı arabirimler ve sınıflar için davranır
Java instanceof
operatör davranışları aşağıdaki ilgili bilmek isterim.
interface C {}
class B {}
public class A {
public static void main(String args[]) {
B obj = new B();
System.out.println(obj instanceof A); //Gives compiler error
System.out.println(obj instanceof C); //Gives false as output
}
}
Neden böyle? interface C
class B
, ilişkisi yok ama obj instanceof A
bu durumda derleyici hata verir, oysa yanlış veriyor?
CEVAP
14 Temmuz 2015, Salı
Java birden fazla sınıf mirası var çünkü obj
tip B
A
alt edilemez nesne derleme sırasında kesinlikle biliniyor. Öte yandan muhtemelen C
, Bu durumda örneğin arayüzü: alt türü olabilir
interface C {}
class B {}
class D extends B implements C {}
public class A {
public static void main(String args[]) {
B obj = new D();
System.out.println(obj instanceof C); //compiles and gives true as output
}
}
Yani isteyen sadece obj instanceof C
ifade derleyici söyleyemem peşin olsun olacak doğru veya yanlış, ama bakıyorsun obj instanceof A
bunu biliyor, bu her zaman yanlış, bu nedenle anlamsız ve yardımcı olur size önlemek bir hata. Eğer hala programınızda bu anlamsız kontrol etmek istiyorsanız, Object
açık bir döküm ekleyebilirsiniz:
System.out.println(((Object)obj) instanceof A); //compiles fine
Bunu Paylaş:
'örneğin' operatör için ne k...
TextView.setTextSize davranır anormal ...
Nasıl sonek ve önek için iki farklı şe...
Nasıl özel yöntemleri, alanları veya i...
Varsayılan Yüce Metin 2 farklı dosya t...