Considerate questa classe:operatore ternario in Java 8, compilation con Maven
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;
}
}
Il metodo() è di tipo int
, che è un tipo primitivo tornare.
consideri l'operatore ternario utilizzato nella dichiarazione di ritorno:
- compila con il compilatore di default Java 8, ma questo si tradurrà in un NullPointerException in fase di esecuzione, perché?
- usando Maven questo si tradurrà in un errore di compilazione
[ERROR] error: incompatible types: bad type in conditional expression
[ERROR] <null> cannot be converted to int
Qualcuno può spiegare a me perché si comporta diverso?
compilazione fatto con Maven –
Si compila bene per me con javac 1.8.0_45 –
ho un NullPointerException con Java 1.8.0_31, che ci si può aspettare (presumo getIntValue() viene chiamato in Integer.toString()). –