List、List<Object>、List<?>
List、List、List<?>
- List
- List<Object>
- List<?>
- demo
List
1、声明的List集合对其 所指向的集合对象(就是赋值的集合对象)的限制:无泛型限制,并且无视指向的集合对象的泛型,直接当成List处理(泛型擦除)
//泛型参数Integer对集合list无任何影响,list直接无视Integer
//list的泛型类型为默认的Object(泛型擦除)
List list = new ArrayList<Integer>();
list.add("11");
2、对用List声明的集合进行添加的元素的限制:无类型限制,也就是只要是Object就行,任何类型都可以添加
List a1 = new ArrayList();
a1.add(new Object());
a1.add(new Integer(1));
a1.add(1L);
a1.add(new String("a1"));
3、对用List声明的集合进行添加的元素的限制:无类型限制,也就是只要是Object就行,任何类型都可以添加
List
1、声明的List 集合对其 所指向的集合对象(就是赋值的集合对象)的限制:泛型必须是Object,即必须是ArrayList
2、对用List 声明的集合进行添加的元素的限制:无类型限制,也就是只要是Object就行
List<Object> a2 = new ArrayList();
a2.add(new Object());
a2.add(new Integer(2));
a2.add(new String("a2"));
3、虽然Integer对象是Object对象,但是 ArrayList对象并不是 ArrayList对象。
List<?>
1、声明的List<?> 集合对其 所指向的集合对象(就是赋值的集合对象)的限制:无泛型限制,因为?(占位符)代表一个不确定类型(并不是代表Object),即能代表所有类型 2、对用List<?> 声明的集合进行添加的元素的限制:不可对其添加任何类型元素,因为在编译阶段无法知道其准确的泛型类型,随意add()方法无法通过编译检查。
3、程序在编译阶段无法得知list的泛型类型,也不会把添加的元素当成Object处理,所以无法添加元素,但是可以让它指向一个已经有含元素的集合。
4、List<?>在没有赋值以前,可以接受任何类型的集合赋值。允许删除,不允许添加。
List<String> a1 = new ArrayList<>();
a1.add("11");
a1.add("22");
List<?> a4 = a1;
a4.remove(0);
a4.clear();
a4.add(null);
demo
public class Test {public static void main(String[] args) throws Exception {// 第一段:不使用泛型的方式List a1 = new ArrayList();a1.add(new Object());a1.add(new Integer(1));a1.add(new String("a1"));// 第二段:把a1赋值给List<Object>类型的a2,看似a2与a1没有区别List<Object> a2 = a1;a2.add(new Object());a2.add(new Integer(2));a2.add(new String("a2"));// 但是如果尝试把一个带有其它类型泛型的b2赋值给a2,则会编译报错List<String> b2 = new ArrayList<>();// 编译报错,这也是List与List<Object>的区别a2 = b2;// 第三段:把a1赋值给List<Integer>类型的a3,赋值过程没有编译报错,主要为了向前兼容(泛型jdk1.5之后才出现)List<Integer> a3 = a1;a3.add(new Integer(3));// java.lang.ClassCastException: java.lang.Object cannot be cast to java.lang.IntegerInteger integer = a3.get(0);// 编译报错,不允许add非Integer类型a3.add(new Object());a3.add(new String("a3"));// 第四段:把a1赋值给List<?>类型的a4List<?> a4 = a1;a4.remove(0);a4.clear();a4.add(null);// 编译出错,不允许add非null的数据a4.add(new Object());}
List、List<Object>、List<?>相关推荐
- asp.net的aspx页面<% %>、<%@ %>、<%# %>、<%= %>、<%$ %>的用法
1. <%--exegesics--%> 注释 相当于<!----> 2. <% code%> 绑定后台代码块: //相当于写在后台的可执行代码 <form ...
- 运算符“||”与“|”,“”和“”的区别 (附带各类位运算符号详解(、|、^、~、<<、>>、>>>)
区别一: 定义不同: || 和 | 都是表示"或",区别是||只要满足第一个条件,后面的条件就不再判断,而|要对所有的条件进行判断. 区别二: 与操作和或操作的区别 (1)在Jav ...
- 位运算(<<移位>>、与、或|、反~、异或^)及运用【求子集】【判相等】...(各类问题持续更新)
概念不用多说,上图(懒得自己做,图源菜鸟教程) 位运算规律 位运算高级操作 目录 一.与&的性质及运用 1.与的性质 2.输出一个正数二进制表示中1的个数 3.用一条语句判断一个整数是不是2的 ...
- 封装自定义的redis切库工具类ByteArrayRedisTemplate,读取byte数组反序列化成List<Object>
封装自定义的redis切库工具类ByteArrayRedisTemplate,读取byte数组反序列化成List<Object>(使用lettuce连接池) 代码环境 框架:springb ...
- 【Object类、日期、StringBuilder】
[Object类.常用API] 第一章 Object类 1.1 概述 java.lang.Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最 ...
- Object类、常用API
# [Object类.常用API] ## 主要内容 * Object类 * Date类 * DateFormat类 * Calendar类 * System类 * StringBuilder类 * 包 ...
- revit2019 导出obj_revit、3dmax导出object文件软件操作说明.doc
revit.3dmax导出object文件操作说明 目录 一.Revit导出Object文件2 二.3DMAX 导出Object文件2 三.3DMAX文件的材质赋予5 四.Object文件的三维位置调 ...
- intent几种传值数组、对象、集合(Array,Object,List)
1.Array private ArrayList<String> checkList=new ArrayList<String>();Intent intent=new In ...
- 一、Java 面向对象高级——Object类、常用API
day01[Object类.常用API] 主要内容 Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 教学目标 -[ ] 能 ...
- Java面试知识点:Object类、Math类、BigDecimal类、自动装箱、拆箱
问题:Java面试知识点:Object类.BigDecimal类.自动装箱.拆箱 答案: 1.Object类: 代码如下: package com.xy;/*** @ProjectName: day0 ...
最新文章
- Python使用PIL将png图片转化为jpg图片
- linux之pmap命令
- ObjectT5:在线随机森林-Multi-Forest-A chameleon in track in
- 让ERP downloaded product的description能够在CRM被修改
- 大三了,计算机专业学生的困惑。 [转]
- oracle一体机flash卡,PCIe Flash卡设备的测试
- 移动硬盘WINPE启动盘安装方法图解
- Centos7安装mongodb
- 卡巴斯基防病毒软件授权文件添加
- WEB前端基础-HTML CSS总结.xmind思维导图
- uniapp中如何使用微信SDK
- mysql印度时区_【工作记录】JDBC连接MySQL,跨时区调查CST转Asia/Shangha
- 斗罗大陆手游服务器维护,05.19《斗罗大陆:武魂觉醒》停服维护公告(修罗1-7服先行服)...
- 求助-强化学习基础-K-摇臂老虎机Python
- alios下载_AliOS Studio开源工具|AliOS Cloud App集成开发环境(AliOS Studio)下载 v1.2.1 官方Windows版 - 比克尔下载...
- 5G网络的关键技术及特点,面临的挑战!
- SLIC 超像素分割详解(三):应用
- 破天荒!苹果终于对 MacBook Air 大更新,还有全新 iPad Pro 和 Mac mini
- 权威SSL证书的CA机构有哪些
- 计算机专业英语课程标准,502057《计算机专业英语》课程标准