在处理generics
和Callable
时遇到以下错误:
表达式的类型必须是数组类型,但它解析为 捕获#1? extends Object []
public class Test {
public Object m1(Callable<? extends Object[]> abc) throws Exception {
return abc.call()[0];//Getting error here
}
}
我真的不确定是什么导致了这个错误。
如果有人知道这个错误,那将会很棒,因为我无法理解它。
不是上述问题的重复,请检查
答案 0 :(得分:0)
您无法扩展数组。只需使用Callable<Object[]>
。
更新:
或者,如果它是可以扩展的元素类,您可以这样做:
public <T> T m1(Callable<T[]> abc) throws Exception {
return abc.call()[0];
}
答案 1 :(得分:0)
我建议你自己做一点调试
public class Test {
public Object m1(Callable<? extends Object[]> abc) throws Exception {
Object[] call = abc.call(); // Maybe your error is here
System.out.println(call.length); // See what this returns
return call[0];
}
}
另请记住,当您说//Getting error here
时,请告诉我们您遇到的错误。