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

清单 无法转换为ArrayList

蒯宏达
2023-03-14
问题内容

在我的代码的开头,有:

List<List<Integer>> result = new ArrayList();

然后,(这里是反转子列表):

List<Integer> sub = new ArrayList();
re = reverse(result.get(j)); // error occurs here

有这种方法:

public ArrayList<Integer> reverse(ArrayList<Integer> list) {
    List<Integer> newList = new ArrayList<>();

    for(int i=list.size()-1; i>=0; i--) {
        newList.add(list.get(i));}
        return newList;
    }
}

错误消息是:

列表无法转换为ArrayList

为什么?


问题答案:

像这样想,您有一个Fruit调用re(我使用此名称,因为它是您正在使用的变量的名称)。

Fruit re;

您有一个reverse输入类型为的方法Apple

public Apple reverse(Apple a) {
    // ...
}

我们有一个re声明为的变量Fruit这意味着我们要说它总是某种(Fruit也许Apple,但也许)Orange-甚至Banana

当您尝试Fruit将方法赋予方法时Apple,编译器会停止运行,因为无法确定它是100%an Apple。例如…

Fruit re = new Orange();
reverse(re);

kes!可以这么说,我们正在将一个方形的钉子插入一个圆孔中。reverse需要Apple,不是Orange。可能发生坏事!

旁注: 为什么可以那样分配Apple给声明为Fruit那时的东西?(reverse返回an AppleFruit f = reverse(re);是合法的。)因为an Apple
一个Fruit。如果将其声明为更具体,Apple而将返回类型声明为更一般Fruit
此处将存在问题。(如果reverse返回FruitApple a = reverse(re);将是非法的。)

如果你没有按照比喻,
替换FruitList,并AppleArrayList以上再次读取。ListFruit,是描述抽象概念的一般方法。ArrayListApple,是抽象概念的特定实现。(LinkedList可能Orange也是。)

通常,您希望将事物声明为可以获取所需功能的最通用事物。进行以下更改应该可以解决您的问题。

public List<Integer> reverse(List<Integer> list) {

我们正在采取某种ListIntegerS和返回某种ListInteger秒。



 类似资料:
  • 问题内容: 如何将String 列表转换为数组?以下代码返回错误。 错误: 问题答案: 你要 有关文档,请参见此处,请注意,您也可以以填充已传递数组的方式调用此方法,而不仅仅是使用它来计算要返回的类型。另请注意,也许当您打印阵列时,您更喜欢 因为那将打印实际的元素。

  • 问题内容: 解析后,我的文件“ s”包含 因此,我需要在attributeIDGet列表中的冒号之后获取所有数字。我知道有几种方法可以做到。但是有什么方法可以 直接转换为。 由于以下代码抱怨类型不匹配,因此我尝试执行Integer.parseInt,但我想这不适用于List。这是String。 问题答案: 不,您需要遍历数组

  • 问题内容: 为什么写: 问题答案: 实现的对象是。 您要在其中覆盖的方法应将对象作为参数,而将其强制转换为。您的实现应描述如何与另一个进行比较。 要真正进行排序,您可能还需要制作工具,然后将实际逻辑复制粘贴到其中。

  • 问题内容: 我当前正在使用条件来检索用户的详细信息,但是当尝试用合适的用户查询详细信息对象时,我得到了ClassCastException。 我的标准代码; 我也尝试使用; 两者都给我ClassCastException。我知道我可以通过让用户实现Serializable来轻松解决它,但是还有其他解决方案吗? 问题答案: 唯一的其他解决方案是实现Externalizable。

  • 问题内容: 您能解释一下为什么会发生这种情况吗,请问如何解决? 因此,我正在使用Oracle-ADF,并且正在使用往复组件。我使用 getValue()方法返回一个对象,我正尝试将其转换为ArrayList,以便以后可以使用它。因此,我创建了 然而,这行代码是香蕉: 而且我一直在 我尝试了其他方式,例如: 但是我仍然遇到同样的问题,该怎么办? 问题答案: 返回一个实现,但不是。它碰巧有一个类名,但

  • 今年早些时候,我安装了一个带有nginx入口的kubernetes集群。虽然没有什么问题,但效果很好。对于入口,我使用了标签 apiVersion:networking.k8s.io/v1beta1 然而,我最近安装了最新版本的(kubernetes 1.22),它只允许 networking.k8s.io/v1 我的问题是使用我的旧yaml配置与新格式。 我的yaml文件如下所示: 我的新清单如