泛型和可调用导致特殊错误

时间:2017-05-02 10:17:03

标签: java generics

在处理genericsCallable时遇到以下错误:

  

表达式的类型必须是数组类型,但它解析为   捕获#1? extends Object []

 public class Test {

    public Object m1(Callable<? extends Object[]> abc) throws Exception {
        return abc.call()[0];//Getting error here
    }
}

我真的不确定是什么导致了这个错误。

如果有人知道这个错误,那将会很棒,因为我无法理解它。

不是上述问题的重复,请检查

2 个答案:

答案 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时,请告诉我们您遇到的错误。