我有一个通配符对象列表,并希望将迭代算法与项目处理分开,这取决于列表中包含的对象类型。
确定Listitem
中的类型并分派到适当的方法的最佳方法是什么?items
doSomething
private void iterateListAlgo (List<?> items) {
for (int i = 0, len = items.size(); i < len; i++) {
//... lalala
doSomething(items.get(i));
}
}
private void doSomething (ClassA item) {
//... lalala
}
private void doSomething (ClassB item) {
//... lalala
}
// etc.
编译它给了我错误:
required: ClassA
found: CAP#1
reason: argument mismatch; Object cannot be converted to ClassA
where CAP#1 is a fresh type-variable:
CAP#1 extends Object from capture of ?
我宁愿将类型转换保留在iterateListAlgo
函数之外,但我什至不确定如何做到这一点。