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

修复java中的错误:不兼容的类型:java.lang.Object无法转换为捕获#1 of?,java,generics,Java,Generics,我的代码声明了Object类型的值变量: 最终对象值 然后使用对象加载此变量 然后声明并加载泛型集合变量: final集合c=(集合)argumentDefinition.getFieldValue() 集合变量在上述两种情况下都是通用的,带有括号和问号,在本文中不会通过 当我尝试使用集合的add方法时: c.添加(值) 我收到错误消息: java:不兼容的类型:java.lang.Object无法转换为捕获#1 of add方法在集合中声明为: 布尔加法(E) 我如何修复错误?我想我知道发生了

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

最终对象值

然后使用对象加载此变量

然后声明并加载泛型集合变量:

final集合c=(集合)argumentDefinition.getFieldValue()


集合变量在上述两种情况下都是通用的,带有括号和问号,在本文中不会通过

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

c.添加(值)

我收到错误消息:

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

add方法在集合中声明为:

布尔加法(E)


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

如果不知道argumentDefinition.getFieldValue()
返回的是什么,就很难判断您的问题到底是什么,但一个可能的解决方案是将变量类型从
集合更改为
集合
,您可以替换吗?有目标。我想它会起作用的

import java.util.ArrayList;
import java.util.Collection;

public class KaviTemre {
    final Object value="kavi";
    public static void main(String[] args) {
    new KaviTemre().myMethod();
    }
    void myMethod()

    {
        Collection<Object> obj = new ArrayList<Object>();
        final Collection<Object> c = (Collection<Object>)obj;
        c.add(value);

        for(Object o:c)
            System.out.println(o.toString());
    }
}
import java.util.ArrayList;
导入java.util.Collection;
公共级KaviTemre{
最终对象值=“kavi”;
公共静态void main(字符串[]args){
新的KaviTemre().myMethod();
}
void myMethod()
{
Collection obj=new ArrayList();
最终集合c=(集合)obj;
c、 增加(价值);
用于(对象o:c)
System.out.println(o.toString());
}
}

您应该执行以下操作:

((Collection<Object>)c).add(value);
((集合)c).添加(值);

然后,代码将编译并运行。

请发布一些实际的代码来演示问题。“带有括号和问号,在本文中不会通过。”-将文本格式化为
code
Collection
表示:未知类型的集合。它可以是一个集合,或者一个集合,或者一个集合。你不知道。显然,您不能向该集合添加随机对象:如果该对象是字符串,而该集合是集合,则会破坏其类型安全性。
argumentDefinition.getFieldValue()
返回什么?什么类型?pathfinderelite-argumentDefinition.getFieldValue()返回和对象。我假设我们必须保留集合的泛型性质,但由于只添加了对象,这看起来不错,代码也可以运行。谢谢你。谢谢你-用Object使收藏具体化是可行的。因为他们使用了原始类型,所以我假设他们需要保留泛型,但我认为这是可以的