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

Java: **当B实现A时,** 从列表 **到列表 的转换?**

酆奇文
2023-03-14
问题内容

**

定义了以下类和接口:

public interface A {
}

public class B implements A {
}

我有一个ListB对象,我需要投给ListA对象:

List<B> listB = new List<B>();
listB.add(new B());  // dummy data
listB.add(new B());  // dummy data
listB.add(new B()); // dummy data

List<A> listA = (List<A>) listB;

上面的最后一行导致编译错误“无法从List 强制转换为List ”。我尝试通过以下方法解决此问题:

List<A> listA = Arrays.asList((A[]) listB.toArray());

不幸的是,这引发了ClassCastException。有谁知道我该如何解决?

**


问题答案:

**

您不能像那样抛弃它。创建一个新的:

List<A> listA = new ArrayList<A>(listB);

构造函数采用Collection<? extends A>。无论如何,它将指向相同的引用。

**



 类似资料:
  • 问题内容: 我脑部抽筋:我有一个和一个,并且试图从我的方法之一返回a ,但是出现错误(在下面的行中): 如何解决此问题而无需创建新列表? 澄清: 我不希望将列表创建为(也许是显而易见的解决方案),因为我想私下维护一个,以便将来可以访问SomeClass的方法,而不是公共接口中的方法。在下面的示例案例中没有显示,但是在我的真实程序中我需要它。 问题答案: 您应该将方法重新定义为 同样,其他列表声明。

  • 我编写了这个函数,它看起来很有用,但我想知道是否有更干净的解决方案。 奖励问题:我有一个java 8约束,但是后来的版本如何改进它?我想我不再需要使用 ,因为 Java 9 引入了 函数。

  • 问题内容: ** 这可能吗?如果不是,为什么在Java中这不可能呢? ** 我认为我正在寻找的主题是此处“协变类型”,但是它晦涩难懂,并且不能解决我的问题。 问题答案: 这是一个直观的示例,说明如何使错误变得可怕:

  • 问题内容: 我只是在查看List接口中定义的方法: ,我有一个问题。为什么是通用的?因此,方法不是完全类型安全的。以下代码片段可编译但会导致: 在我看来,如果toArray不是通用的并且采用List类型参数,那会更好。 我已经写了玩具示例,没有通用就可以了: 有什么理由可以这样声明? 问题答案: 从javadocs: 与toArray()方法一样,此方法充当基于数组的API和基于集合的API之间的

  • 本文向大家介绍从C ++中的除数列表中找到A和B,包括了从C ++中的除数列表中找到A和B的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将解决以下问题。 给定一个整数数组,我们必须找到两个数字A和B。数组中所有剩余的数字都是A和B的除数。 如果数字是A和B的除数,则它将在数组中出现两次。 让我们看看解决问题的步骤。 数组中的最大数字是A和B中的数字之一。假设它是A。 现在,B将是第二大

  • 问题内容: 现在,我想创建一个新列表,其中包含中的所有值。这里的结果应该包含 问题答案: 使用以下方法尝试: