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;
}
}
Tôi đã xem qua câu hỏi này trong một cuốn sách SCJP. Mã này in ra 1
thay vì một NPE như mong đợi. Ai đó có thể giải thích lý do cho cùng?Tại sao mã này KHÔNG trả về một NullPointerException?
Điều này không đúng, 'm.getNull()' ** không ** được gọi. Xem câu trả lời của Jon. – assylias
m.getNull() sẽ chỉ được gọi nếu getNull không tĩnh. mà tôi đã đề cập trước đó. –
Ý tôi là 'System.out.println (m.getNull(). GetValue());' không tương đương với 'System.out.println (A.getValue());'. Nó tương đương với 'm.getNull(); System.out.println (A.getValue()); '. – assylias