Rozważmy klasy:Trójkątny operator Java 8 Zestawienie z Mavenie
package be.duo.test;
public class Main {
public static void main(String[] args) {
Main main = new Main();
main.execute();
}
private void execute() {
for(int i = 0; i < 10; i++) {
System.out.println("" + method());
}
}
private int method() {
return (Math.random() > 0.5d) ? 1 : null;
}
}
metody (metod) jest typu int
, który jest pierwotnych powrotu.
Rozważmy operator potrójny używany w rachunku Powrót:
- kompiluje z Java 8 domyślny kompilator, ale spowoduje to NullPointerException w czasie wykonywania, dlaczego?
- użyciu Maven to spowoduje błąd kompilacji czasu
[ERROR] error: incompatible types: bad type in conditional expression
[ERROR] <null> cannot be converted to int
Czy ktoś może mi wyjaśnić dlaczego zachowuje się inaczej?
kompilacja odbywa się Maven –
To kompiluje dobrze dla mnie z javac 1.8.0_45 –
otrzymuję NullPointerException z Java 1.8.0_31 który należy się spodziewać (zakładam getIntValue() jest wywoływana w Integer.toString()). –