为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

如何将超级类型列表转换为子类型列表?例如,假设您有两个类:public class TestA {}public class TestB extends TestA{}我有一个返回List<TestA>我想将列表中的所有对象转换为TestB所以我最后List<TestB>.
查看完整描述

3 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

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

List<TestB> variable = (List<TestB>)(List<?>) collectionOfListA;


查看完整回答
反对 回复 2019-07-06
?
呼如林

TA贡献1798条经验 获得超3个赞

泛型的转换是不可能的,但是如果以另一种方式定义列表,则可以将TestB存储在其中:

List<? extends TestA> myList = new ArrayList<TestA>();

在使用列表中的对象时,仍然需要进行类型检查。


查看完整回答
反对 回复 2019-07-06
  • 3 回答
  • 0 关注
  • 532 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信