当前位置: 首页 > 面试题库 >

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

米飞龙
2023-03-14
问题内容

例如,假设你有两个类:

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

我有一个返回a的方法,List 并且我想将列表中的所有对象都强制转换为,TestB以便最终得到 a List<TestB>


问题答案:

简单地铸造List<TestB>几乎可行;但这是行不通的,因为你不能将一个参数的泛型类型转换为另一个参数。但是,你可以强制转换中间通配符类型,并且将允许它(因为你可以强制转换为通配符类型或从通配符类型强制转换,只是带有未选中的警告):

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


 类似资料:
  • 我正在修改open JDK以添加特性,我已经遇到了两次,但没有好的解决方案。

  • 我试图创建动态下拉,其值是从使用微服务的查找表之一填充,但我已经尝试了许多方式相同,到目前为止,我还没有成功地使其工作。 下面的代码用于调用webservice 这是我的对象类型 仅用于显示目前运行的以下代码 我做了什么我尝试调用webservice在多种方式调用它,尝试铸造服务响应直接使用JSON字符串响应和可能的事情我尝试过。 你能在这里帮忙吗?我们将不胜感激。

  • 问题内容: 我有一个关于将子类列表分配给超类列表的基本问题。 所以我有以下内容: 为什么最后一次分配失败?对不起,新手问题 问题答案: 为了解释这一点,让我用整数代替“ B”,用数字代替“ A”。这只是为了使其更容易解释。 失败的原因是因为nList可以采用任何Number;可以采用Integer;可以采用Double;或者就此而言,可以是Number的任何子类。但是,对于iList并非如此。您不

  • 我在尝试使用JSON_serializable序列化从internet获取的复杂JSON并使用FutureProvider将它们连接在一起时遇到了这个问题。这是json文件, 这是包含序列化类的代码, 获取json文件并将其转换为dart的未来提供者, 这是基因编码, 这是转换后的json文件显示的代码 当我试着运行这个项目时,我遇到了这个错误 i/flutter(23347): type'Lis

  • 问题内容: 假设class 扩展class 。我碰巧知道 只 包含的实例。有什么方法可以将转换为吗? 看来我唯一的选择是遍历集合,一次转换一个元素,创建一个新集合。鉴于类型擦除使得这在运行时完全不必要,这似乎完全浪费了资源。 问题答案: 您可以通过无类型的List界面进行强制转换:

  • 对API控制器的远程调用(通过RestTemboard)(从一侧返回已知对象的List([]),从远程侧返回未知类型的对象)返回