init方法中的@Nonnull字段

时间:2015-09-01 11:07:33

标签: java eclipse annotations non-nullable checker-framework

有没有办法让Eclipse意识到@Nonnull字段已在某些初始化方法中初始化。我在其他完全无法使用的Checker Framework中寻找像@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

1 个答案:

答案 0 :(得分:1)

据我所知,Eclipse目前没有此功能。您可以查看a list of supported annotations的文档。

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

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

Checker Framework无法为您解决问题真是太糟糕了。您的体验并不典型:Google每天都会在数百个项目上运行Checker Framework,还有很多其他成功案例。您可以随时提交bug report; Checker Framework开发人员也很友好。