我有这个静态方法
public static List<? extends A> myMethod(List<? extends A> a) {
// …
}
我正在调用它
List<A> oldAList;
List<A> newAList = (List<A>) MyClass.myMethod(oldAList);
由于未经检查转换为 List<A>
,因此会发出警告.有什么办法可以避免强制转换吗?
最佳答案
您需要定义返回的类型匹配参数(并扩展 A)
public static <T extends A> List<T> myMethod(List<T> a) {
// …
}
然后就可以写了
List<E> list1 = .... some list ....
List<E> list2 = myMethod(list1); // assuming you have an import static or it's in the same class.
或
List<E> list2 = SomeClass.myMethod(list1);
关于java - 泛型和静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13917546/