我正在尝试java.util.List.toArray
使用 Eclipse 的外部注释来注释该方法,但我不确定如何注释返回类型。如果我的列表具有以下签名:
@NonNull List<@NonNull Element>
List.toArray 应该返回:
@NonNull Element @NonNull[]
但是,如果列表可以包含可为空的元素:
@NonNull List<@Nullable Element>
List.toArray 也应该返回一个包含可为空元素的数组:
@NonNull Element @Nullable[]
我正在使用 Eclipse Neon,这甚至可能吗?Eclipse Neon New and Noteworthy 页面似乎为 List.get() 提供了一个示例,并建议我应该省略该值的无效性,但这似乎不适用于数组?这是我正在使用的外部注释定义:
class java/util/List
toArray
<T:Ljava/lang/Object;>([TT;)[TT;
<T:Ljava/lang/Object;>([T1T;)[T1T;
但这不起作用:
@NonNull
List<@NonNull String> collect = // works
@NonNull
String @NonNull [] array = collect.toArray(new String[0]);
collect.toArray
被标记为错误:
Null 类型安全(类型注释):'String[]' 类型的表达式需要未经检查的转换才能符合 '@NonNull String []'
我怎样才能解决这个问题?这甚至可以与 Eclipse Neon 一起使用吗?