我有 eclipse,当我试图查看一个未初始化的对象是否等于 null 时,它不会让我这样做,它出现了一个“x 可能没有被初始化”的错误,我知道它应该可以工作。
我的意思的例子:
Object obj;
System.out.println(obj==null ? "no value":"has a value");
它不会编译,它会说“obj 可能尚未初始化”我如何更改 eclipse 中的编译器设置来解决这个问题?
最佳答案
How can I change my compiler settings in eclipse to fix this?
你不能。 Java 语言规范要求任何符合标准的 Java 编译器将此视为编译错误。
没有 Eclipse 编译器设置导致它打破这个规则。
即使(假设地)存在这样的设置,我认为当 JVM 尝试加载字节码文件时,字节码文件将无法通过验证。 (如果您能以某种方式欺骗 JVM 使用未初始化的局部变量的值,那将破坏运行时类型安全性,导致 JVM 崩溃……甚至更糟。)
如果 obj
是一个实例变量而不是局部变量,它会被默认初始化为null
,你不会得到一个编译错误。但是局部变量没有默认初始化。
关于java - 如何阻止编译器将未初始化的对象读取为错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13889364/