在下面的代码中我们得到的值i
在空引用上,尽管NPE
不在这里。
public class Test {
static int i = 10;
Test getTest() {
return null;
}
public static void main(String args[]) {
Test t = new Test();
System.out.println(t.getTest());
System.out.println(t.getTest().i);
}
}
output
null
10
非正式地说,你可以这样想
System.out.println(t.getTest().i);
相当于
System.out.println(Test.i);
because i
是静态的。
这可能是最简单的答案。
严格来说,它们并不等同。实际上
getTest()
被调用但其返回值未被使用
用于访问i
字段如下面的测试所示。
public class Test {
static int i = 10;
Test getTest() {
System.out.println("Method getTest() called!");
return null;
}
public static void main(String args[]) {
Test t = new Test();
System.out.println(t.getTest());
System.out.println(t.getTest().i);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)