小编kah*_*fan的帖子

List <Double>是List <?的子类型?扩展Number>为什么?

这就是我所知道的:

  1. Double是子类型,NumberList<Double>不是子类型List<Number>.
  2. List<Dog>不是子类型,List<Animal>因为你可以添加Cat,List<Animal>但你不能这样做List<Dog>.
  3. List<? extends Number>表示此列表可以存储Number类型的变量和Number子类型的变量.List<Double>表示此列表可以存储Double类型的变量.

如果上面的任何错误,请纠正我,然后是List<Double>子类型List<? extends Number>和为什么?

java extends subtype

12
推荐指数
3
解决办法
1427
查看次数

ArrayList <Integer>自动将其类型更改为ArrayList <String>

public void run(){
    setFont("Courier-24");
    //Define list as ArrayList<Integer>
    ArrayList<Integer> list = new ArrayList<Integer>();
    readList(list);
}

private void readList(ArrayList list){
    list.add("Hello");
    list.add(2);
    println("list = "+list);
    println("Type of list = "+list.get(0).getClass());
    println("Type of list = "+list.get(1).getClass());
}
Run Code Online (Sandbox Code Playgroud)

结果:

list = [Hello,2]
list的类型= class java.lang.String
list的类型= class java.lang.Integer

这是我的代码和结果.我的问题是,Integer类型的ArrayList如何可以存储String对象?现在列表的类型是什么?这是什么机制?

java types arraylist erasure

7
推荐指数
1
解决办法
1561
查看次数

标签 统计

java ×2

arraylist ×1

erasure ×1

extends ×1

subtype ×1

types ×1