我已将 Checker Framework v2.1.6 引入 java8 项目并修复了所有空值错误,但遇到以下错误
Main.java:52: error: [assignment.type.incompatible] incompatible types in assignment.
List<String> collectedStrings = strings.stream().collect(Collectors.toList());
^
found : @Initialized @NonNull List<@Initialized @Nullable Object>
required: @UnknownInitialization @Nullable List<@Initialized @NonNull String>
以下(简化)示例代码引发错误
List<String> strings = new ArrayList<>();
strings.add("test");
List<String> collectedStrings = strings.stream().collect(Collectors.toList());
collectedStrings.forEach(System.out::println);
现在我可以通过使结果@Nullable 来解决这个问题
List<@Nullable String> collectedStrings = strings.stream().collect(Collectors.toList());
但这只会将错误级联到下一个调用,现在认为 collectStrings 是可疑的
有没有人可以解决这个问题?