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;
}
}
Ich bin in einem SCJP-Buch auf diese Frage gestoßen. Der Code gibt 1
anstelle eines NPE aus, wie zu erwarten wäre. Könnte jemand bitte den Grund dafür erklären?Warum gibt dieser Code keine NullPointerException zurück?
Dies ist falsch, 'm.getNull()' ** tut ** gerufen werden. Seht Jons Antwort. – assylias
m.getNull() wird nur aufgerufen, wenn getNull nicht statisch ist. was ich bereits erwähnt habe. –
Was ich meinte ist, dass 'System.out.println (m.getNull(). GetValue());' nicht äquivalent zu 'System.out.println (A.getValue());'. Es ist äquivalent zu 'm.getNull(); System.out.println (A.getValue()); '. – assylias