0

有没有办法让 Eclipse 意识到 @Nonnull 字段已在某些初始化方法中初始化。我在其他完全无法使用的 Checker 框架中寻找类似 @​​EnsuresNonNull({"bar"}) 的东西。

例子:

import javax.annotation.Nonnull;
public class Foo{
    @Nonnull String foo;
    public Foo(){
        init();
    }
    //need something like @EnsuresNonNull({"foo"});
    public void init(){
        foo="foo";
    }
}

收到以下错误:

The @Nonnull field foo may not have been initialized
4

1 回答 1

1

据我所知,Eclipse 目前不具备此功能。您可以查看其文档以获取支持的注释列表

Eclipse 目前提供的注释集比 Checker Framework 更有限。这意味着程序员无法表达关于他们的程序的尽可能多的事实,因此 Eclipse 工具会发出更多的误报警告,您必须查看或不合理地抑制这些警告。另一方面,Eclipse 工具速度更快,与开发环境的集成度更高;这是关于您要使用哪一个的权衡。

Eclipse 开发人员一直在努力改进他们的工具,而且他们很友好。因此,我相信他们会欢迎您的建议或补丁。

Checker 框架不适合您,这真是令人遗憾。您的经历并不典型:Google 每天在数百个项目上运行 Checker Framework,并且还有很多其他成功案例。您可以随时提交错误报告;Checker Framework 开发人员也很友好。

于 2015-09-01T15:03:56.527 回答