2 回答
TA贡献1815条经验 获得超10个赞
使用合适的默认注释可以减少空注释的数量。
以下内容适用于 org.eclipse.jdt.annotation_2.x 中的
批注:
特别是@org.eclipse.jdt.annotation.NonNullByDefault
能够在各种位置影响类型,包括类型参数。
所以如果你写:
@NonNullByDefault Map<String, String> someMethod(Map<String,Map<String,String>> arg) { ...
这确实会被解释为
@NonNull Map<@NonNull String, @NonNull String> someMethod(@NonNull Map<@NonNull String, @NonNull Map<@NonNull String, @NonNull String>> arg) {
它甚至可以微调 的效果,它可以应用于单个方法,或整个类、包或模块。@NonNullByDefault
如果签名仍包含一些可为 null 的类型,则需要单独注释这些类型,以便覆盖默认值,但这些异常应比非空类型少得多。请注意,两者都可以附加到所有相关位置的类型,同样包括类型参数。@Nullable
@NonNull
@Nullable
有关 Eclipse 如何解释泛型感知空注释的一般文档,请参见联机帮助。
TA贡献1856条经验 获得超5个赞
我不知道所有可能的NotNull注释。如果它们中的任何一个允许,那么它们应该能够注释泛型。ElementType.TYPE_PARAMETER
如果没有,只需实现以下注释:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.CLASS)
@Target(ElementType.TYPE_PARAMETER)
public @interface NotNull {}
并添加更多元素类型,如果你想在其他方面使用此注释,而不仅仅是泛型。如果要在运行时通过反射使用注释,则必须将“保留策略”更改为 。RUNTIME
添加回答
举报