在 NPE 的情况下尝试操作
请考虑以下代码:
String s = null;
s.toLowerCase();
它抛出一个 NPE:
异常 in thread “main” java.lang.NullPointerException
at pracJava1.Prac.main(Prac.java:7)
问题是:为什么JVM不能同时放置一个帮助器消息说:
线程 “main” java.lang.NullPointerException 中的异常。企图
toLowerCase() on null
这在以下情况下很有用,其中行号不足以猜测是否为 null 或 。obj.setName(s.toLowerCase())
obj
s
关于它的可行性,让我们看一下生成的字节码:
stack=1, locals=2, args_size=1
0: aconst_null
1: astore_1
2: aload_1
3: invokevirtual #2 // Method java/lang/String.toLowerCase:()Ljava/lang/String;
因此,它可能确实知道,它尝试操作的方法名称。JVM专家,您怎么看?