Java zor bir üçlü operatörü - autoboxing
Hadi aşağıdaki kod parçasında basit Java kodu arayın:
public class Main {
private int temp() {
return true ? null : 0;
// No compiler error - the compiler allows a return value of null
// in a method signature that returns an int.
}
private int same() {
if (true) {
return null;
// The same is not possible with if,
// and causes a compile-time error - incompatible types.
} else {
return 0;
}
}
public static void main(String[] args) {
Main m = new Main();
System.out.println(m.temp());
System.out.println(m.same());
}
}
Bu basit Java kodu, temp()
yöntem sorunları derleyici hata olsa da dönüş türü işlev int
ve bunun için çalışıyoruz dönüş değeri null
(deyim return true ? null : 0;
). Derlenmiş, belli ki bu 6* *çalışma zamanı özel durumuna neden olur.
Ancak, aynı şeyi eğer if
deyimi (same()
yöntemi gibi) ile üçlü operatör ifade edecek olursak yanlış olduğu ortaya çıkmaktadıryokderleme zamanı sorun, bir hata! Neden?
CEVAP
Derleyici yorumlar null
olarak bir null başvuru için bir Integer
, uygular autoboxing/kutulama kuralları için koşul operatörü (anlatıldığı gibi Java Language Specification, 15.25), ve mutlu bir şekilde hareket eder. Bu deneyerek teyit edebilirsiniz NullPointerException
çalıştırma aynı anda oluşturur.
= Operatörü Java...
Tür ':&?dönüş#039; (üçlü koşul op...
^ Operatörü Java ne yapar?...
İyi uygulama Boole kontrolleri için Ja...
Java'da üçlü operatör sadece 7 - Java ...