有没有办法强制返回 Arrays.asList 的返回类型
我有一个返回基类集合的方法:
import java.util.*;
class Base { }
class Derived extends Base { }
Collection<Base> getCollection()
{
return Arrays.asList(new Derived(),
new Derived());
}
这无法编译,因为 () 的返回类型与方法 () 的返回类型不匹配。我理解为什么会发生这种情况:由于泛型类型不同,因此这两个类不通过继承相关。Arrays.asList
List<Derived>
Collection<Base>
有许多方法可以修复编译器错误,从更改方法的返回类型到不使用 Arrays.asList,再到将其中一个派生对象强制转换为 Base。
有没有办法告诉编译器在解析 Arrays.asList 调用的泛型类型时使用不同但兼容的类型?(我一直尝试使用此模式并遇到此问题,因此,如果有一种方法可以使其工作,我想知道它。
我以为你可以做这样的事情
Collection<Base> getCollection()
{
return Arrays.asList<Base>(new Derived(),
new Derived());
}
当我尝试编译它(java 6)时,编译器抱怨它期望逗号处有一个“)”。