【发布时间】:2016-06-07 14:04:26
【问题描述】:
有什么理由可以在一个对象上创建方法引用
null Java 中的引用?这样做可能永远不会正确,但可能会导致以后难以发现的错误:
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/791452441@1c20c684
fn.run(); // throws a null pointer exception
}
}
【问题讨论】:
-
您正在使用 Eclipse 进行测试吗?我用 JDK 1.8.0_51 进行了测试,它在预期的地方抛出了 NPE。这可能回答了stackoverflow.com/questions/37413106/… 的问题。因为它应该在
Runnable fn = test::m处抛出一个 NPE。 -
@Michael 是的,Eclipse 中似乎存在一个与此相关的错误(与链接问题相同)。
-
Eclipse Neon 中仍然存在问题
-
哇当你的工具这样误导你时,这很痛苦。
-
有点意思,因为对于这种类型的方法引用,:: 的左边是一个返回引用的表达式。虽然这更明确地是一个空引用,但这将具有相同的效果:
functionThatReturnsNull()::method
标签: java eclipse nullpointerexception null java-8