如何将超级类型列表转换为子类型列表?

如何将超级类型列表转换为子类型列表?

例如,假设您有两个类:

public class TestA {}public class TestB extends TestA{}

我有一个返回List<TestA>我想将列表中的所有对象转换为TestB所以我最后List<TestB>.


动漫人物
浏览 535回答 3
3回答

蝴蝶刀刀

简单地向List<TestB>几乎可以工作;但是它不能工作,因为您不能将一个参数的泛型类型转换给另一个参数。但是,您可以通过中间通配符类型进行强制转换,并且它将被允许(因为您可以对通配符类型进行转换,只需要一个未检查的警告):List<TestB>&nbsp;variable&nbsp;=&nbsp;(List<TestB>)(List<?>)&nbsp;collectionOfListA;

呼如林

泛型的转换是不可能的,但是如果以另一种方式定义列表,则可以将TestB存储在其中:List<?&nbsp;extends&nbsp;TestA>&nbsp;myList&nbsp;=&nbsp;new&nbsp;ArrayList<TestA>();在使用列表中的对象时,仍然需要进行类型检查。
打开App,查看更多内容
随时随地看视频慕课网APP