在我的代码的开头,有:
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
返回anApple
,Fruit f = reverse(re);
是合法的。)因为anApple
是
一个Fruit
。如果将其声明为更具体,Apple
而将返回类型声明为更一般Fruit
, 则
此处将存在问题。(如果reverse
返回Fruit
,Apple a = reverse(re);
将是非法的。)
如果你没有按照比喻,
替换Fruit
用List
,并Apple
与ArrayList
以上再次读取。List
是Fruit
,是描述抽象概念的一般方法。ArrayList
是Apple
,是抽象概念的特定实现。(LinkedList
可能Orange
也是。)
通常,您希望将事物声明为可以获取所需功能的最通用事物。进行以下更改应该可以解决您的问题。
public List<Integer> reverse(List<Integer> list) {
我们正在采取某种List
的Integer
S和返回某种List
的Integer
秒。
问题内容: 如何将String 列表转换为数组?以下代码返回错误。 错误: 问题答案: 你要 有关文档,请参见此处,请注意,您也可以以填充已传递数组的方式调用此方法,而不仅仅是使用它来计算要返回的类型。另请注意,也许当您打印阵列时,您更喜欢 因为那将打印实际的元素。
问题内容: 解析后,我的文件“ s”包含 因此,我需要在attributeIDGet列表中的冒号之后获取所有数字。我知道有几种方法可以做到。但是有什么方法可以 直接转换为。 由于以下代码抱怨类型不匹配,因此我尝试执行Integer.parseInt,但我想这不适用于List。这是String。 问题答案: 不,您需要遍历数组
问题内容: 为什么写: 问题答案: 实现的对象是。 您要在其中覆盖的方法应将对象作为参数,而将其强制转换为。您的实现应描述如何与另一个进行比较。 要真正进行排序,您可能还需要制作工具,然后将实际逻辑复制粘贴到其中。
问题内容: 我当前正在使用条件来检索用户的详细信息,但是当尝试用合适的用户查询详细信息对象时,我得到了ClassCastException。 我的标准代码; 我也尝试使用; 两者都给我ClassCastException。我知道我可以通过让用户实现Serializable来轻松解决它,但是还有其他解决方案吗? 问题答案: 唯一的其他解决方案是实现Externalizable。
问题内容: 您能解释一下为什么会发生这种情况吗,请问如何解决? 因此,我正在使用Oracle-ADF,并且正在使用往复组件。我使用 getValue()方法返回一个对象,我正尝试将其转换为ArrayList,以便以后可以使用它。因此,我创建了 然而,这行代码是香蕉: 而且我一直在 我尝试了其他方式,例如: 但是我仍然遇到同样的问题,该怎么办? 问题答案: 返回一个实现,但不是。它碰巧有一个类名,但
问题内容: 我已经编写了一个通用类,下面是该类的构造函数。我想像这样写 由于我不知道运行时的泛型类型,因此它将引发异常。 有什么办法解决这些问题?E的声明是 这就是我要打电话的方式 更新 家伙,谢谢您的帮助。我在搞泛型,所以问题就被创建了。这是所有导致问题的代码- 更新2 :似乎除了传递下面的答案中提到的类类型外,我们无法做到这一点。 问题答案: 这是重现异常所需的最最少的代码。 Java泛型使用