[英] How do you cast a List of supertypes to a List of subtypes?
例如,假设您有两个类:
public class TestA {}
public class TestB extends TestA{}
我有一个返回List<TestA>
的方法,我想把列表中的所有对象都转换为TestB
,这样我就得到了List<TestB>
.
例如,假设您有两个类:
public class TestA {}
public class TestB extends TestA{}
我有一个返回List<TestA>
的方法,我想把列表中的所有对象都转换为TestB
,这样我就得到了List<TestB>
.
简单地强制转换为List<TestB>
几乎是可行的;但是它不起作用,因为您不能将一个参数的泛型类型强制转换为另一个参数.但是,您可以强制转换中间通配符类型,这将是允许的(因为您可以转换为通配符类型,只是带有未选中的警告):
List<TestB> variable = (List<TestB>)(List<?>) collectionOfListA;