Una*_*bal 10 java android extends arraylist
我正在使用Android Studio,我一直遇到一个我不知道如何解决的问题.我不知道这是Android Studio的问题,是Java还是错误.
我有一个类,其构造函数如下:
public MakeQuery(Callable<ArrayList<? extends A>) {
...
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下行创建该类的对象:
Callable<ArrayList<B>> callable = new Callable<ArrayList<B>>() {...};
MakeQuery makeQuery = new MakeQuery(callable);
Run Code Online (Sandbox Code Playgroud)
(当然,课程B延伸A.双重检查)
但是当我调用构造函数时,IDE会告诉我它需要另一种类型的参数.
我犯了什么错误?感谢您的帮助!:)
Lou*_*man 11
写Callable<? extends ArrayList<? extends A>>.
造成这种情况的原因很复杂,但是您编写的代码只有在您完全 传入时才会起作用Callable<ArrayList<? extends A>>.
规则是即使B延伸A,Foo<B>也不延伸Foo<A>.但它确实延伸了Foo<? extends A>.
因此,应用该规则两次:
List<B>不延伸List<A>,但它延伸List<? extends A>.Callable<List<B>>不延伸Callable<List<? extends A>>,但它延伸Callable<? extends List<? extends A>>.