小编Dis*_*ubo的帖子

修复 java 中的错误:不兼容的类型:java.lang.Object 无法转换为 capture#1 of?

我的代码声明了一个 Object 类型的值变量:

final Object value;

然后用一个对象加载这个变量。

然后声明并加载一个通用集合变量:

final Collection<?> c = (Collection<?>) argumentDefinition.getFieldValue();

集合变量在上述两个实例中都是通用的,在本文中没有通过括号和问号。

当我尝试使用集合的 add 方法时:

c.add(value)

我收到错误消息:

java:不兼容的类型:java.lang.Object 无法转换为捕获 #1 的 ?

add 方法在 Collection 中声明为:

boolean add(E e);

我该如何修复错误?我想我明白发生了什么 - 编译器为 Object 不兼容的泛型类型创建了一个占位符。我不能为集合使用原始类型,因为我试图消除代码中的原始类型。我是否需要使用辅助函数,如果需要,具体如何使用?谢谢你。

java generics

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

generics ×1

java ×1