列表在实例化时,"< >"中应该明确指明要存储的对象类型的,要存储字符串类型的话,为什么不直接写成 List<String> list = new ArrayList<String>();呢?
A类是B类的父类,可以用A类型引用指向B类对象,但对于泛型不存在这种关系, 正如你写的List<Object> list = new ArrayList<String>();就是不正确的 泛型类只是针对编译器而才,虚拟机中不存在泛型。 编译器在编译源码时会将泛型类erase,替换成确切的类型。 如果你想用任意类型接收,可以用泛型通配符?
List是ArrayList的父类型<>内的东西没有父子关系之说。这个不同于数组
List list0 = new ArrayList<String>(); List<Object> list = list0; 可以通过。这是编译器的原因。知道就行了。不用深究。
而且这种用法也不符合逻辑。。
List<Object> list=new ArrayList<Object>();
list.add(new String("try"));
List<String> list = new ArrayList<String>();呢?
正如你写的List<Object> list = new ArrayList<String>();就是不正确的
泛型类只是针对编译器而才,虚拟机中不存在泛型。
编译器在编译源码时会将泛型类erase,替换成确切的类型。
如果你想用任意类型接收,可以用泛型通配符?
List<Object> list = list0;
可以通过。这是编译器的原因。知道就行了。不用深究。