gpt4 book ai didi

java - 在Java8中使用空分析注释

转载 作者:行者123 更新时间:2023-11-30 08:12:45 27 4
gpt4 key购买 nike

在Java中,我使用注释来进行“空分析”。我不使用 Eclipse 的默认注释,并且定义了自己的注释。

对于每个包,我通常在 package-info.java 文件中添加全局 NonNullByDefault 注释。

使用Java版本<= Java7,下面的代码没有问题,一切正常。

@my.package.annotations.NonNullByDefault
package my.foo.package;

但是当我将 Eclipse 设置为兼容 Java8 时(我的系统上安装的唯一 JDK 是 Java8),则会出现错误:

A default nullness annotation has not been specified for the package my.foo.package - Java Problem

我的注释是通过以下方式声明的:

@Retention(RetentionPolicy.CLASS)
@Target({ ElementType.PACKAGE, ElementType.TYPE,
ElementType.METHOD, ElementType.CONSTRUCTOR })
public @interface NonNullByDefault {
// marker annotation
}

Java8 中有哪些新功能?有人可以向我解释一下使用注释的好方法吗?

最佳答案

JDT 自己的注释在 org.eclipse.jdt.annotation 版本 1.x 和 2.x 之间发生了显着变化。为了充分利用 Java 8 中类型注释的更高精度,@NonNullByDefault 现在具有 DefaultLocation[] 类型的属性,用于指定应应用默认值的确切位置。

使用相同级别的详细信息重建您自己的注释并使 JDT 理解您自己的注释将很麻烦。

不过,无属性的 @NonNullByDefault 应该以“默认”方式理解(请参阅 org.eclipse.jdt.annotation.NonNullByDefault.value 的默认值>)。显然有a bug在 Java 8 项目中评估此类自定义注释。

关于java - 在Java8中使用空分析注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30138400/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com