incompatible types: ArrayList<ArrayList<Integer>> cannot be converted to List<List<Integer>>

导语:今天在做算法题的时候碰到一个问题


 error: incompatible types: ArrayList<ArrayList<Integer>> cannot be converted to List<List<Integer>>
        return res;

查找相关资料发现是泛型的一个坑,先看一些小例子(众所周知,只要类型兼容,就可以将一种类型的对象分配给另一种类型的对象。)

//例如,你可以指定一个Integer到一个Object,因为Object是Integer的超类型
Object someObject = new Object();
Integer someInteger = new Integer(10);
someObject = someInteger;   // OK

//Integer和Double都是Number的一种

public void someMethod(Number n) { /* ... */ }

someMethod(new Integer(10));   // OK
someMethod(new Double(10.1));   // OK


//泛型也是这样
Box<Number> box = new Box<Number>();
box.add(new Integer(10));   // OK
box.add(new Double(10.1));  // OK

接着看另外一种情况

public void boxTest(Box<Number> n);

boxTest(Box<Integer>) //注意是不可以的
boxTest(Box<Double>) //注意是不可以的

那为啥这种就不可以呢?(如下图:Box<Integer>和Box<Number>是并列关系,而非继承关系,所以不可以)

接着回归我们的问题,当我们试图用ArrayList<ArrayList<Integer>> 去new一个List<List<Integer>>时,就会报这个错。

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

原因也是上面的问题ArrayList<Integer>并不继承与List<Integer>

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值