例如,假设您有两个类:
public class TestA {} public class TestB extends TestA{}
我有一个返回 a 的方法,List<TestA>我想将该列表中的所有对象转换为,TestB以便最终得到 a List<TestB>。
List<TestA>
TestB
List<TestB>
简单地投射到List<TestB>几乎可以工作;但它不起作用,因为您不能将一个参数的泛型类型转换为另一个参数。但是,您可以通过中间通配符类型进行转换,并且它是被允许的(因为您可以在通配符类型之间进行转换,只是带有未经检查的警告):
List<TestB> variable = (List<TestB>)(List<?>) collectionOfListA;