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;
}
}
私はこの質問をSCJPの本で見つけました。このコードはNPEの代わりに1
を出力します。誰かが同じ理由を説明してもらえますか?なぜこのコードはNullPointerExceptionを返しませんか?
これは間違っています、 'm.getNull呼び出されます。ジョンの答えを見てください。 – assylias
m.getNull()は、getNullが静的でない場合にのみ呼び出されます。私は前に述べた。 –
私は、 'System.out.println(m.getNull()。getValue());'は 'System.out.println(A.getValue());'と同じではありません。 'm.getNull();と同じです。 System.out.println(A.getValue()); '。 – assylias