爪哇:
我的方法的相关问题部分是:
public void createArrays(ArrayList<SomeClass> objectList) {
SomeClass[] array = {objectList.toArray(new SomeClass[objectList.size()])};
ArrayList<SomeClass> = objectList;
objectList.get(0).SomeClassInstanceMethod();
}
我有一个 A 类和 B 类对象的列表。
我的项目中的其他一些类制作这些列表,然后将其中一个列表传递给 createArrays(将它们用于某些任务)
此方法,除其他外,创建 SomeClass 类型的 Array 和 ArrayList(即 A 或 B) • 然后,在一个数组的元素上,createArrays 调用 A 和 B 都具有的实例方法
我尝试了许多组合,包括在参数 ArrayList 中获取 0-index 对象的类,但我永远无法创建未明确定义的类型的数组。我怎样才能做到这一点?
说明:我正在尝试(1)创建与参数数组具有相同类型的数组,并且我还想(2)调用数组中元素的实例方法(这会产生问题,因为如果我使用超类,它不会调用 A 和 B 等子类独有的方法)。
最终目标:我准备了一堆不同类实例的列表,我想对它们执行完全相同的过程,所以这就是为什么我想要一个方法来对它传递的任何对象列表执行相同的操作。
您可以将其转换ArrayList
为Object
数组
Object[] objectArr = objectList.toArray();
然后,如果您想重新获取对象数组中的元素,SomeClass
请使用instanceOf
方法检查它并强制转换为SomeClass
类型。
if(objectArr[0] instanceOf SomeClass) {
SomeClass instance = (SomeClass) objectArr[0];
}
否则你可以将整个对象数组转换为 SomeClass 数组
if (objectArr instanceof SomeClass[]) {
SomeClass[] instances = (SomeClass[]) objectArr;
}
此外,您可以尝试以下方法,将类类型作为参数传递给getArray
方法。
public <T> T getArray(Class<T> type, Object[] objectArr) throws Exception {
T instances = type.cast(objectArr);
return instances;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句