Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我设置时,是否有ide警告我;可选<;字符串>;可选=空&引用;_Java_Eclipse_Intellij Idea_Ide_Java 8 - Fatal编程技术网

Java 当我设置时,是否有ide警告我;可选<;字符串>;可选=空&引用;

Java 当我设置时,是否有ide警告我;可选<;字符串>;可选=空&引用;,java,eclipse,intellij-idea,ide,java-8,Java,Eclipse,Intellij Idea,Ide,Java 8,如果我写这样的东西 java.util.Optional<String> optional = null; 我想我至少应该得到一个警告。我们遇到了一些意外的NullPointerException,这些异常很晚才被发现,因为没有人希望有一个可选的null实例(这显然是一个bug) 我试过Eclipse和IntelliJ,但都没有提到。我也没有找到插件。没有这样的支票有什么原因吗?或者它是在某处实现的?公共最终类可选{ public final class Optional<T

如果我写这样的东西

java.util.Optional<String> optional = null;
我想我至少应该得到一个警告。我们遇到了一些意外的NullPointerException,这些异常很晚才被发现,因为没有人希望有一个可选的null实例(这显然是一个bug)

我试过Eclipse和IntelliJ,但都没有提到。我也没有找到插件。没有这样的支票有什么原因吗?或者它是在某处实现的?

公共最终类可选{
public final class Optional<T> {
....
}
.... }
由于
可选
是从
对象
继承的类(与Java中的每个类一样),因此可以将其设置为
null
。这里没有什么问题


但是,当您想将其设置为空值时,您应该始终意识到将其设置为
可选的.empty()

如果您想看到警告for语句,该语句可能会在eclipse使用中导致
空指针异常

NP:可能的空指针解引用(在某些路径上为NP\u空)
有一个语句分支,如果执行该分支,将保证取消引用null值,这将在执行代码时生成NullPointerException。当然,问题可能是分支或语句不可行,空指针异常永远无法执行;确定这超出了FindBugs的能力


在Eclipse中,您可以转到项目属性,然后转到Java编译器-->错误/警告,选中
启用项目特定设置
,并在
潜在编程问题
下,将
潜在空指针访问
的设置更改为
警告
错误
(如您所愿):


潜在的编程问题“>

没有这样的检查。这使得检查它们是否为null成为可选的另一个候选项…每个最新的IDE都应该支持
@Nullable
@NonNull
,以及
@NonNullByDefault
注释…例如,对于Eclipse,所有的解决方案通常都是为了避免NPE。启用这些检查会在我们的项目中导致上百个警告。带有注释的注释并不是无趣的,但我不想在我的项目中有特定于Eclipse的注释,然后仍然由我来确保注释放置正确。@Marcel:您不需要特定于Eclipse的注释。您可以在您的项目中使用您想要的任何包和名称声明它们,然后配置Eclipse以使用您的注释,尽管我建议保留相同的简单名称,并且只调整包,以便每个开发人员都能识别它们。当然,您必须将这些注释放置在正确的位置,如果您不告诉编译器哪些变量允许为
null
,哪些变量不允许,那么您希望编译器如何理解这些变量?
optional = null;
public final class Optional<T> {
....
}