List、List<Object>、List<?>

news2024/11/16 3:36:25

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.Integer
        Integer integer = a3.get(0);
        // 编译报错,不允许add非Integer类型
        a3.add(new Object());
        a3.add(new String("a3"));

        // 第四段:把a1赋值给List<?>类型的a4
        List<?> a4 = a1;
        a4.remove(0);
        a4.clear();
        a4.add(null);
        // 编译出错,不允许add非null的数据
        a4.add(new Object());

    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/129357.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试难吗?应该怎样学习?

软件测试是一份不错的职业&#xff0c;现在也有许多小伙伴想要学习软件测试技术&#xff0c;成为一名软件测试员。但是零经验的小白又担心不知道软件测试好不好学&#xff0c;应该如何学习软件测试能力&#xff0c;需要做哪些培训呢。下面就给大家推荐一些学习经验与技巧&#…

【JavaEE】JVM(八股文!)

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录【JVM内存划分】【JVM类加载】【JVM垃圾回收机制GC】一&#xff09;GC是啥二&#xff09;GC回收哪部分内存三&#xff09;具体怎么回收四&#xff09;怎么找垃圾&#xff08;判定某个对象是否是垃圾&#xff09;五&a…

圆和椭圆外投影

1 圆外一点在缩放到圆上 圆方程: x2y222x^2y^2 2^2 x2y222 直线方程: ykxy kx ykx 圆外一点: A(3,3)A(3,3)A(3,3) 求点B. 方法1-解方程 圆外一点A(3,3)A(3,3)A(3,3),那么:直线k1k1k1,直线方程:yxyxyx 方程联立: x2x24x^2 x^2 4 \\ x2x24 x2y2x \sqrt{2} \\ y \sqrt…

点云 3D 分割 - SqueezeSeg(ICRA 2018)

点云 3D 分割 - SqueezeSeg&#xff08;ICRA 2018&#xff09;摘要1. 引言2. 相关工作A. 三维激光雷达点云的语义分割B. 用于3D点云的CNNC. 图像的语义分割D. 通过模拟收集数据3. 方法描述A. 点云变换B. 网络结构C. 条件随机场D. 数据收集4. 实验A. 评估指标B. 实验设置C. 实验…

2022电商行业重磅年度报告:八大年度关键词盘点

2022年终于过去&#xff0c;当网易云音乐推出“年度报告”霸屏朋友圈&#xff0c;它在试图唤起那些可能被遗忘的情绪和小心思。 这一年&#xff0c;有人悲观&#xff0c;有人积极&#xff0c;有人凭实力搭上了顺风车&#xff0c;也有人放弃了抵抗。这一年&#xff0c;作为电商人…

Mybatis学习笔记 | 动力节点老杜

目录 一、MyBatis概述 历史 MyBatis特点 ORM概述 二、Mybatis入门 1、SqlSessionFactory和SqlSession 2、核心配置文件的加载 3、mybatis事务管理机制 4、第一个mybatis程序 5、mybatis继承日志 三、mybatis增删改查 1、增加 通过Map传值 通过实体类传值 2、删除…

【uniapp】如何实现拖动文件直接上传

做uniapp项目发布H5有个后台管理&#xff0c;用户说上传文件的体验需要改进&#xff0c;那个弹出选择文件对话框然后去填文件路径选择文件上传&#xff0c;感觉操作太麻烦&#xff0c;于是就有了这么一个需求&#xff0c;需要实现拖动文件直接上传的&#xff0c;这样效率和体验…

九、动态组件与插槽

一、动态组件 1.1、什么是动态组件 动态组件指的是动态切换组件的显示与隐藏。 1.2、如何实现动态组件渲染 vue提供了一个内置的<component>组件&#xff0c;专门用来实现动态组件的渲染。示例代码如下&#xff1a; data() {// 1. 当前要渲染的组件名称return {comN…

学习笔记:混沌工程

个人理解&#xff1a; 混沌工程&#xff0c;chaos engineering&#xff0c;找出系统中的脆弱环节的方法学 混沌工程是软件测试和质量保证的一种方法&#xff0c;在黑客入侵之前或系统故障之前使用它来识别漏洞&#xff0c;由于混沌工程测试而做出的改变增加了人们对系统的信心。…

SpringBoot @SessionScope注解和Session的用法解释

参考资料 JSESSIONID是什么SessionScope 解决了不同session下如何生成不同服务实例 目录一. 前期准备二. 被SessionScope作用的类三. 使用被SessionScope作用类的Service四. 效果4.1 用Edge浏览器进入页面4.2 然后用Edge浏览器进入页面4.3 若将CacheHolder类上的SessionScope注…

nginx部署next项目访问日志去重小技巧,next项目资源不计入日志,网站日志统计去除资源请求

next项目访问日志去重小技巧需求提出具体解决方案配置代码需求提出 之前在跟SEO做网站日志分析的时候受到了一部分资源请求数据的影响&#xff0c;统计出来的ip访问次数远远大于实际值&#xff0c;从日志中或者网站控制台看到每个页面都会发送十几个请求&#xff0c;而这些请求…

Qt中使用QWebEngine加载百度离线地图,在特定地点加载个圣诞树

一、前言 2022年圣诞节到来啦&#xff0c;很高兴这次我们又能一起度过~ 遇上圣诞节&#xff0c;正好最近研究了QT中加载百度离线地图&#xff0c;用百度地图API加载个圣诞树&#xff08;主要我想要那个圣诞节特制勋章&#xff09;。 二、创意名 在百度离线地图加载个圣诞树。…

演化博弈、复制动态方程与仿真

本文只整理和总结一下我的理解&#xff0c;文末列出了可供参考的更详细完整的资料。建议先看参考资料[1]&#xff08;博弈论公开课&#xff09;的博弈论课程&#xff0c;可以直接从第11讲开始看。   参考链接[2]是关于演化博弈非常经典的一本书。   参考链接[5]涵盖内容比较…

CSDN文章质量检测系统

想知道你的文章在CSDN中质量如何吗&#xff1f; 你想知道你的CSDN文章到底写得怎么样吗&#xff1f; 你想要获得一个你的系统的CSDN文章评分吗&#xff1f; CSDN质量分数帮你解决这个问题&#xff0c;网址如下&#xff1a; https://www.csdn.net/qc 界面在如下&#xff0c;如果…

XGBoost模型的python实现

文章目录函数介绍实例二分类问题多分类问题作者&#xff1a;李雪茸函数介绍 实现 XGBoost 分类算法使用的是 xgboost 库的 XGBClassifier&#xff0c;具体参数如下&#xff1a; 1、max_depth&#xff1a;给定树的深度&#xff0c;默认为3 2、learning_rate&#xff1a;每一步…

SpringBoot整合TKMyBatis实现增删改查

文章目录什么是TKMybatis&#xff1f;SpringBoot整合TKMybatis实体类注解TKMapper接口如何使用基本增删改操作批量查询和删除批量添加自定义查询条件ExampleExample 条件设置Example 使用什么是TKMybatis&#xff1f; TKMybatis 是基于Mybatis 框架开发的一个工具&#xff0c;…

[4]MQTT协议基础--下

1.QoS服务质量等级 MQTT服务质量(Quality of Service 缩写 QoS)正是用于告知物联网系统&#xff0c;哪些信息是重要信息需要准确无误的传输&#xff0c;而哪些信息不那么重要&#xff0c;即使丢失也没有问题。 MQTT协议有三种服务质量级别&#xff1a; QoS 0 – 最多发一次…

公司jmeter分享

一、数据库压测组件功能说明 1.JDBC Connection Configuration:jdbc连接配置(一个测试计划可以有多个 JDBC Connection) 2.Variable Name for created pool: 创建池的变量名 连接绑定的变量名,JMeter可以使用多个连接,每个连接绑定到不同的变量;通过引用不同的绑定变量…

安全防范语音通知实现方案

语音通知作为一种强提醒的信息通知方式&#xff0c;非常适合使用在安全防范语音通知场景中&#xff0c;可以有效避免用户错过重要信息。那安全防范语音通知怎么实现&#xff1f;这里互亿无线小编为大家做个详细介绍&#xff1a; 一、如何发送安全防范语音通知信息 互亿无线语…

本地事务、分布式事务、CAP 定理与 BASE 理论、分布式事务几种方案、Linux 安装 Seata、Seata的使用-56

一&#xff1a;本地事务 1.1 事务的基本性质 1.数据库事务的几个特性&#xff1a;原子性(Atomicity )、一致性( Consistency )、隔离性或独立性( Isolation)和持久性(Durabilily)&#xff0c;简称就是 ACID&#xff1b; 原子性&#xff1a;一系列的操作整体不可拆分&#xf…