我有一个接受通用 ArrayList<?>
的函数作为参数之一,我发现当我尝试使用 ArrayList
的添加方法时出现 Java 错误
no suitable method found for add(MyClass)
我想要完成的是为类和 ArrayList 传递参数,并让函数用类的对象填充 ArrayList。不过,如果我可以改为从我的函数创建并返回 ArrayList,那也很好(少一个参数会很好)。
这里有一些代码来说明我目前是如何尝试解决这个问题的:
public void myFunction(Class clazz, ArrayList<?> myList)
{
Object myObject=null;
try{myObject = clazz.newInstance();}catch(Exception e){}
myList.add(myObject);
}
...或者可能是这样的:
public ArrayList<?> myFunction(Class clazz)
{
ArrayList<clazz> myList = new ArrayList<clazz>();
Object myObject=null;
try{myObject = clazz.newInstance();}catch(Exception e){}
myList.add(myObject);
}
如果有人可以请:
a) 给我看一些执行此操作的代码
b) 解释如何使用泛型实现我的目标
或 c) 让我知道哪里出了问题并提供替代方法
最佳答案
为了给 ArrayList 添加一些东西,你需要让它的类型定义是逆变的。
有点像
public <T> void doSomething(...,List<? super T> args,...)
会起作用。
关于java - 当参数作为通用 ArrayList<?> 传递时如何添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12769591/