gpt4 book ai didi

java - 是否有隐式扩展到泛型类型的可空注释?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:45:11 25 4
gpt4 key购买 nike

我在一个 Java 项目中工作,最近我开始为方法参数和返回值添加可为 null 的注释。我想知道是否有任何注释可以添加到参数中,以便它也涵盖泛型类型。现在我有类似的案例:

Map<String, String> someMethod(Map<String, Map<String, String>> arg) {
...
}

变成:

@NotNull
Map<@NotNull String, @NotNull String> someMethod(@NotNull Map<@NotNull String, @NotNull Map<@NotNull String, @NotNullString>> arg) {
...
}

显然,这变得难以阅读。我对 Java 注解的内部结构不是很熟悉,所以这不可能吗?

最佳答案

可以使用合适的默认注释来减少空注释的数量。

以下适用于 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) {

甚至可能到fine-tune @NonNullByDefault 的效果,它可以应用于单个方法或整个类、包或模块。

如果签名仍然包含一些可空类型,则需要将它们单独注释为 @Nullable 以覆盖默认值,但这些异常应该比非空类型少得多。请注意,@NonNull@Nullable 都可以附加到所有相关位置的类型,同样包括类型参数。

可以找到有关 Eclipse 如何解释泛型感知空注释的一般文档 in the online help .

关于java - 是否有隐式扩展到泛型类型的可空注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55512960/

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