2013-01-02 75 views
8

thể trùng lặp:
How come invoking a (static) method on a null reference doesn’t throw NullPointerException?gọi phương thức tĩnh trong java

Bất kỳ một thể giải thích tại sao đầu ra của chương trình sau đây là "gọi"

public class Test4{ 

    public static void method(){ 
    System.out.println("Called"); 
    } 

    public static void main(String[] args){ 
    Test4 t4 = null; 
    t4.method(); 
    } 
} 

Tôi biết chúng ta có thể gọi phương thức tĩnh với tham chiếu lớp, nhưng h Tôi đang gọi bằng cách sử dụng tham chiếu null. xin vui lòng làm rõ nghi ngờ của tôi

Trả lời

13

Trong mã Byte

Test4 t4 = null; 
t4.method(); 

sẽ

Test4 t4 = null; 
Test4.method(); 

trình biên dịch sẽ chuyển đổi các cuộc gọi với tên lớp cho các phương pháp tĩnh. tham khảo số question trên SO mà bản thân tôi đã yêu cầu.

0

Phương pháp tĩnh có thể được gọi thông qua tên lớp hoặc phiên bản. Tôi sẽ cố gắng tránh gọi chúng bằng một ví dụ (cũng có rất nhiều công cụ cảnh báo bạn làm như vậy vì thực hành không tốt).

2

Nó không quan trọng nếu dụ là null, bởi vì bạn đang gọi một phương thức tĩnh . Hãy suy nghĩ theo cách này.

Mỗi phương pháp tĩnh là tương đương với một phương pháp lớp trong khi một phương pháp không tĩnh là tương đương với một phương pháp dụ.

Cho dù bạn có làm gì đi chăng nữa, miễn là bạn đang làm việc với phương pháp hoặc thành viên tĩnh.

Các vấn đề liên quan