Có lý do nào để tạo tham chiếu phương thức trên tham chiếu null
trong Java không? Việc làm này có lẽ là không bao giờ đúng nhưng có thể dẫn đến sai sót đó là khó có thể tìm thấy sau:Tạo tham chiếu phương thức trên tham chiếu null không ném ngoại lệ
public class Test {
void m() {
}
public static void main(String[] args) {
Test test = null;
Runnable fn = test::m; // no exception
System.out.println(fn); // prints Test$$Lambda$1/[email protected]
fn.run(); // throws a null pointer exception
}
}
Bạn đang thử nghiệm với Eclipse? Tôi đã thử nghiệm với JDK 1.8.0_51 và nó ném NPE, nơi dự kiến. Điều này có thể trả lời câu hỏi sau đó http://stackoverflow.com/questions/37413106/thread-setuncaughtexceptionhandler-and-java-8-method-reference/. Bởi vì nó nên ném một NPE tại 'Runnable fn = test :: m'. – Tunaki
Tôi đang bỏ phiếu để đóng câu hỏi này là không có chủ đề vì nó hỏi về hành vi không tồn tại. –
@Tunaki yes Tôi đã thử nghiệm trong Eclipse và nó không ném một ngoại lệ khi tôi bỏ ghi chú dòng cuối cùng – Michael