将Java ArrayList <Custom Class>转换为ArrayList <Object>

Aca*_*ost 7 java arraylist

我试图给转换ArrayList类的SomeClass一个ArrayListObject.然后将这个新ArrayListObject传递给一个函数.我目前做了以下事情:

// convert ArrayList<SomeClass> to generic ArrayList<Object>

Object[] objectArray = someClassList.toArray();
ArrayList<Object> objects = new ArrayList<Object>();

for (int i = 0; i < objectArray.length; i++) {
    objects.add(objectArray[i]);
}

someFunction(objects);

public void someFunction(ArrayList<Object> objects) {
    // do something with objects
}
Run Code Online (Sandbox Code Playgroud)

这样做有更高效或"标准"的方式吗?我首先做的是"错误"吗?

将它转换ArrayList为类的目的Object是我创建了一个外部库来处理ArrayList泛型Objects.

Aas*_*set 6

如果您能够将功能的签名更改为ArrayList<? extends Object> objects或更换ArrayList<?> objects(或更好,List而不是ArrayList),您将能够ArrayList<SomeClass>直接通过.

的一个原因ArrayList<SomeClass>没有一个ArrayList<Object>是,一个ArrayList<Object>愿意接受你add() 的任何形式的Object进去,这是不是你可以用做ArrayList<SomeClass>.另一方面,a ArrayList<? extends Object>允许您从列表中检索元素,但不能添加元素,因此ArrayList<SomeClass>可以安全地分配给它.