İşlecin boş olması durumunda, boş bir işaretçi istisnası atmadığından, instanceOf operatörünün açık null çeklere ihtiyacı yoktur.
Çalışma zamanında, ilişkisel ifadenin değeri boş değilse ve referans bir tür döküm özel durumu yükseltilmeden referans türüne dökülebilirse, instanceOf operatörünün sonucu doğrudur.
İşlenenin boş olması durumunda, instanceOf operatörü false değerini döndürür ve bu nedenle, açık boş çekler gerekli değildir.
,
public static void main(String[] args) {
if(a != null && a instanceof ArrayList){ //Violation
System.out.println("In if block");
}
else
{
System.out.println("In else block");
}
}
InstanceOf doğru kullanımı, aşağıdaki
public static void main(String[] args) {
if(a instanceof ArrayList){ //Correct way
System.out.println("In if block");
}
else
{
System.out.println("In else block");
}
}
+1 jls gösterildiği gibi aşağıdaki örneği ele alalım: Çalışma zamanında, Operatör örneğinin sonucu bu durum geçerlidir RelationalExpression değeri boş değil ve bir ClassCastException yükseltmeksizin başvuru, ReferenceType'a (§15.16) dönüştürülebilir. Aksi halde sonuç yanlıştır. http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#80289 – barrowc
@barrowc pin noktaya işaret etti! – naikus
'97'den beri Java programlama yapıyorum ve bu bana haber oldu. Sağol, +1! –