init 方法中的 @Nonnull 字段
@Nonnull fields in an init method
有没有办法让 Eclipse 意识到 @Nonnull 字段已经在一些初始化方法中初始化了。我正在寻找类似 @EnsuresNonNull({"bar"}) 的东西,否则完全无法使用 Checker Framework。
示例:
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
据我所知,Eclipse 目前没有此功能。您可以查看 a list of supported annotations.
的文档
Eclipse 目前提供的注释集比 Checker Framework 更为有限。这意味着程序员无法表达关于他们的程序的尽可能多的事实,因此 Eclipse 工具发出更多误报警告,您必须查看或不合理地抑制这些警告。另一方面,Eclipse 工具速度更快,并且与开发环境集成得更好;这是关于你想使用哪个的权衡。
Eclipse 开发人员不断努力改进他们的工具,而且他们很友好。因此,我相信他们会欢迎您的建议或补丁。
很遗憾 Checker Framework 没有为您解决。您的经验并不典型:Google 每天在数百个项目上运行 Checker Framework,还有很多其他成功案例。您可以随时提交 bug report; Checker Framework 开发人员也很友好。
有没有办法让 Eclipse 意识到 @Nonnull 字段已经在一些初始化方法中初始化了。我正在寻找类似 @EnsuresNonNull({"bar"}) 的东西,否则完全无法使用 Checker Framework。
示例:
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
据我所知,Eclipse 目前没有此功能。您可以查看 a list of supported annotations.
的文档Eclipse 目前提供的注释集比 Checker Framework 更为有限。这意味着程序员无法表达关于他们的程序的尽可能多的事实,因此 Eclipse 工具发出更多误报警告,您必须查看或不合理地抑制这些警告。另一方面,Eclipse 工具速度更快,并且与开发环境集成得更好;这是关于你想使用哪个的权衡。
Eclipse 开发人员不断努力改进他们的工具,而且他们很友好。因此,我相信他们会欢迎您的建议或补丁。
很遗憾 Checker Framework 没有为您解决。您的经验并不典型:Google 每天在数百个项目上运行 Checker Framework,还有很多其他成功案例。您可以随时提交 bug report; Checker Framework 开发人员也很友好。