Java 棋盘格框架参数.type.compatible不需要的正数

Java 棋盘格框架参数.type.compatible不需要的正数,java,checker-framework,Java,Checker Framework,所以我从零度检查器得到这个错误 > Task :compileJava /Users/calebcushing/IdeaProjects/ppm/scaf/src/main/java/com/xenoterracide/scaf/PebbleTemplateProcessor.java:94: error: [argument.type.incompatible] incompatible argument for parameter obj of requireNonNull.

所以我从零度检查器得到这个错误

> Task :compileJava
/Users/calebcushing/IdeaProjects/ppm/scaf/src/main/java/com/xenoterracide/scaf/PebbleTemplateProcessor.java:94: error: [argument.type.incompatible] incompatible argument for parameter obj of requireNonNull.
        var console = Objects.requireNonNull( System.console() );
                                                            ^                                     ^
这是在抱怨
System.console()
可能为null,在读取javadoc时为true。所以我把它包装在
Objects.requirennull()
中,现在它抱怨
requirennull
的参数不能为null,这显然是不正确的


如何告诉
NullnessChecker
忽略
对象。requirennoull()
?我对明确的NPE很好,只是我不想要的意外的。我相信checker已经为这篇文章提供了一个存根。

编辑:下面的答案是为原来的文章写的,其中有3个不相关的问题。(海报后来编辑了原始帖子。)我不知道为什么这个答案被否决,因为它准确地回答了所有3个问题,并提供了更多信息的链接

请问

第一个是抱怨
System.console()
可能为null,这在读取javadoc时是正确的。所以我把它包装在
Objects.requirennull()
中,现在它抱怨
requirennull
的参数不能为null,这显然是不正确的

这在报告中得到了回答

空值检查器的目标是在程序可能抛出
NullPointerException
时向您发出警告。 如果
requirennull()
的参数为
null
,则程序会抛出
NullPointerException
。 因此,将
null
传递给
requirennull()
不会使程序比将
null
传递给可能取消引用它的任何其他例程更正确,并且空值检查程序会发出警告

您试图通过写入
requirennoull()
来消除警告。 如上所述,这没有任何效果:程序仍然抛出
NullPointerException
。 相反,最好是纠正根本问题。您的程序应该检查null并发出用户友好的消息,而不是崩溃——不管崩溃是在您自己的代码中还是在
requirennoull()

第二个是抱怨commons-lang3参数不能接受null,但是它的文档中说不是这样

这一点在报告中也得到了回答

空值检查器读取注释,而不是英语Javadoc注释。 为了让空度检查器知道
toBoolean()
可以接受空参数,其
toBoolean()
的签名需要注释为:

boolean-toBoolean(@Nullable-boolean-bool)
如中所述,您可以编写该注释,以便空值检查器使用它。 您还可以将commons lang注释贡献给社区,以便其他人也可以从中受益

我添加了一些警告,不确定为什么它仍然在发生


您需要在发出警告的位置编写
@SuppressWarnings
,它位于
应用程序
类的声明中。你在程序的另一行写了
@SuppressWarnings

Re:commons-lang3我知道它不读注释。。写这篇文章时我很累。在上游补丁之外,我如何解决这个问题?请参阅我在回答中链接到的。您可能需要创建一个存根文件,如此处所述。>重要链接中最相关的部分,以防外部资源无法访问或永久脱机
@SuppressWarnings(“initialization.fields.uninitialize”)
我尝试将其放在构造函数和类上,但仍然遇到此错误
/Users/calebcushing/IdeaProjects/ppm/scaf/src/main/java/com/xenoterracide/scaf/Application.java:24:error:[initialization.fields.uninitialized]构造函数不初始化字段:arg,args,dir Application(){^
如果要将答案部分移到此处,请将其拆分