Aşağıdakiler neden bir NullPointerException? :NullPointerException yöntemi döndürme türü Object
public static Object myTest() {
boolean x = false;
boolean y = false;
return x && y ? new Object() : x ? x : y ? y : null;
}
public static void main(String [ ] args) {
myTest();
}
i kodunu izleyen bir NullPointerException atmaz birini yaparsanız biliyorum:
A)
public static Object myTest() {
boolean x = false;
boolean y = false;
return x && y ? new Object() : x ? x : y ? y : (Object) null;
}
public static void main(String [ ] args) {
myTest();
}
B)
public static Object myTest() {
Boolean x = false;
Boolean y = false;
return x && y ? new Object() : x ? x : y ? y : null;
}
public static void main(String [ ] args) {
myTest();
}
Ayrıca, cod değiştirirseniz e tamamen ve aşağıdakileri yapın çalışır:
public static Object myTest() {
boolean x = false;
boolean y = false;
if(x && y) {
return new Object();
} else if(x) {
return x;
} else if(y) {
return y;
} else {
return null;
}
}
public static void main(String [ ] args) {
myTest();
}
Ben derleyici şeyler çıkmasını nasılsa bir optimizasyon çeşit yapıyor ve sanırım? Bir çeşit bir döküm problemi olduğunu farz ediyorum, ama neden bir ClassCastException yerine bir NullPointerException atar? Bunun neden olduğuna dair herhangi bir bilgi büyük ölçüde takdir edilecektir! peşin
NullPointerException çünkü o godawful karışıklık bir yerde bir null pointer var. –
Başlangıçta düşündüğüm budur ama bence bakmaya değer, bu yüzden +1 – Bathsheba
@laune, bir 'NullPointerException' atar. –