Returning null como int permitido con operador ternario pero no si la declaración

Veamos el código Java simple en el siguiente fragmento:

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());
    }
}

n este código Java más simple, eltemp()l método @ no emite ningún error del compilador aunque el tipo de retorno de la función esint, y estamos tratando de devolver el valornull (a través de la declaraciónreturn true ? null : 0;). Cuando se compila, esto obviamente causa la excepción de tiempo de ejecuciónNullPointerException.

in embargo, parece que lo mismo está mal si representamos al operador ternario con unaifeclaración @ (como en lasame() método), quehac ¡emite un error en tiempo de compilación! ¿Por qué

Respuestas a la pregunta(8)

Su respuesta a la pregunta