public class Main
{
public static void main(String []ar)
{
A m = new A();
System.out.println(m.getNull().getValue());
}
}
class A
{
A getNull()
{
return null;
}
static int getValue()
{
return 1;
}
}
Me encontré con esta pregunta en un libro de SCJP. El código imprime 1
en lugar de un NPE como sería de esperar. ¿Podría alguien explicar la razón por la cual?¿Por qué este código NO devuelve NullPointerException?
Esto es incorrecto, 'm.getNull()' ** does ** ser llamado. Ver la respuesta de Jon. – assylias
m.getNull() se invocará solo si getNull no es estático. que mencioné antes. –
Lo que quise decir es que 'System.out.println (m.getNull(). GetValue());' no es equivalente a 'System.out.println (A.getValue());'. Es equivalente a 'm.getNull(); System.out.println (A.getValue()); '. – assylias