Java知识点二

news2025/3/13 0:29:49

Java知识点二

  • 1、Comparable内部比较器,Comparator外部比较器
  • 2、源码结构的区别:
    • 1)Comparable接口:
    • 2)Comparator接口:
  • 2、Java反射

1、Comparable内部比较器,Comparator外部比较器

我们一般把Comparable叫做内部比较器,因为需要在定义类的时候就实现这个Comparable、并重写其唯一的方法compareTo(T o),在里边填充上元素比较的逻辑。
我们一般把Comparator叫做外部比较器,因为Comparator一般用于两个元素没有实现Comparable内部比较器的情况下,使用Comparator进行这两个元素的比较。

2、源码结构的区别:

1)Comparable接口:

2)Comparator接口:

在这里插入图片描述
除了compare方法和equals方法其他的都是jdk1.8添加的一些默认方法或者静态方法
在这里插入图片描述
使用场景:
comparable

comparator

使用Comparable必须要修改原有的类,也就是你要排序那个类,就要在那个中实现Comparable接口并重写compareTo方法,所以Comparable更像是“对内”进行排序的接口。 ​
而Comparator的使用则不相同,Comparator无需修改原有类。也就是在最极端情况下,即使Person类是第三方提供的,我们依然可以通过创建新的自定义比较器Comparator,来实现对第三方类Person的排序功能。也就是说通过Comparator接口可以实现和原有类的解耦,在不修改原有类的情况下实现排序功能,所以Comparator可以看作是“对外”提供排序的接口。

2、Java反射

Java反射机制:是指在运行时去获取一个类的变量和方法信息。然后通过获取到的信息来创建对象,调用方法的一种机制。由于这种动态性,可以极大的增强程序的灵活性,程序不用在编译期就完成确定,在运行期任然可以扩展。
在这里插入图片描述
通过反射去使用一个类,首先得获取该类的字节码文件对象,也就是类型为Class类型的对象。
三种方法:

Class<Student> c1 = Student.class;// 使用类的class属性获取

Student s = new Student();
Class<? extends Student> c2 = s.getClass();// 调用对象的getClass()方法

// 使用Class类的静态方法forName(String className)完整包名的路径;这种方式更加灵活可以放在配置文件中
Class<?> c3 = Class.forName("com.test.Student");

由该方法可以获取Student类的对象,Class<?> c3 = Class.forName("com.test.Student") 再用Student类对象获取 类构造方法的对象 Constructor<?> con = c3.getConstructor();
再用类构造方法的对象获取类的对象obj Object obj = con.newInstance();
最后小点:反射可以越过泛型检查,获取到原始方法所需要的类型。
nacos批按钮双击启动失败:
startup.cmd -m standalone

古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。——苏轼《晁错论》

参考文章:
https://zhuanlan.zhihu.com/p/444452171

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

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

相关文章

【MySQL】表的增删改查

目录 MySQL表的增删查改 Create 单行数据全列插入 多行数据指定列插入 插入否则更新 替换数据 Retrieve SELECT 列 全列查询 指定列查询 查询字段为表达式 为查询结果指定别名 结果去重 WHERE 条件 查询英语不及格的同学及其英语成绩 查询语文成绩在80到90分的…

【自动化测试】如何在jenkins中搭建allure

相信大家在做自动化测试过程中&#xff0c;都会用到自动化测试环境&#xff0c;目前最常见的就是通过容器化方式部署自动化测试环境&#xff0c;但对于一些测试小白&#xff0c;不是很会搭建持续集成环境&#xff0c;特别是从0-1的过程&#xff0c;需要自行搭建很多依赖环境&am…

完全保密的以太坊交易:Aztec网络的隐私架构

1. 引言 Aztec为隐私优先的以太坊zkRollup&#xff1a;即其为具有完全隐私保护的L2。 为了理解私有交易的范式变化性质&#xff0c;以及为什么将隐私直接构建到网络架构中很重要&#xff0c;必须首先讨论为什么以太坊不是私有的。 2. 以太坊&#xff1a;公有链 以太坊为具有…

设计师常用的8款作图软件推荐

在数字时代&#xff0c;绘图软件已经成为设计师不可缺少的工具。从图形设计到插图&#xff0c;从传统绘图到人工智能绘画&#xff0c;为了实现高效、方便、创意的设计&#xff0c;设计师需要一个强大的绘图软件。本文将介绍8个易于使用的绘图软件&#xff0c;每个软件都具有独特…

ME51N 采购申请屏幕增强仅显示字段

1、业务需求 通过委外工单生成的采购申请&#xff0c;需要将自定义“图号”字段显示在采购申请中&#xff0c;且只用于显示即可 2、增强实现 增强表EBAN的结构CI_EBANDB 增强点CMOD&#xff1a;MEREQ001 出口EXIT_SAPLMEREQ_001 首先在TOP文件中引入全局CI_EBANDB 创建子屏…

动态渲染 echarts 饼图(vue 2 + axios + Springboot)

目录 前言1. 项目搭建1.1. 前端1.2. 后端 2. 后端数据渲染前端2.1 补充1&#xff1a;在 vue 中使用 axios2.2. 补充2&#xff1a;Springboot 处理跨域问题2.3. 修改前端代码2.3.1 修改饼图样式2.3.2 调用后台数据渲染饼图2.3.3 改造成内外两个圈 前言 因为上文中提到的需求就是…

轻松上手Three.js:JavaScript 3D库指南

1.Three.js概述 Three.js是使用JavaScript语言编写的一款运行在浏览器中的3D引擎。与WebGL不同&#xff0c;开发人员在使用Three.js进行开发时&#xff0c;无须掌握高深的图形学知识&#xff0c;只需使用少量JavaScript代码即可创建出一个3D场景。可以说&#xff0c;Three.js的…

恒运资本:小盘股的优点?投资小盘股要注意哪些方面?

股市是一个充溢时机和危险的当地&#xff0c;不同出资者有不同的偏好&#xff0c;有的人喜爱追逐大盘蓝筹股&#xff0c;有的人则钟情于小盘股。那么小盘股的长处&#xff1f;出资小盘股要注意哪些方面&#xff1f;恒运资本也为我们准备了相关内容&#xff0c;以供参考。 小盘股…

vue+springboot+mysql的垃圾分类管理系统

1、引言 设计结课作业,课程设计无处下手&#xff0c;网页要求的总数量太多&#xff1f;没有合适的模板&#xff1f;数据库&#xff0c;java&#xff0c;python&#xff0c;vue&#xff0c;html作业复杂工程量过大&#xff1f;毕设毫无头绪等等一系列问题。你想要解决的问题&am…

六、Hive数据仓库应用之Hive事务(超详细步骤指导操作,WIN10,VMware Workstation 15.5 PRO,CentOS-6.7)

Hive远程模式部署参考&#xff1a; 一、Hive数据仓库应用之Hive部署&#xff08;超详细步骤指导操作&#xff0c;WIN10&#xff0c;VMware Workstation 15.5 PRO&#xff0c;CentOS-6.7&#xff09; 文章目录 一、事务的设计与特点1、事务的特点2、事务的设计3、事务的实现 二、…

【LeetCode刷题笔记】动态规划 — 70.爬楼梯

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法知识专栏&#xff1a;算法分析&#x1f525; 给大家跳段街舞感谢…

Python不是一种伟大的编程语言?

作为一门简洁易用、生态蓬勃且具有高泛用性的编程语言&#xff0c;Python一直以来都被不少人称作“编程语言中的瑞士军刀”。 尤其随着近来AI热潮席卷全球&#xff0c;Python在编程语言圈中的地位也随之水涨船高&#xff0c;甚至一度被视作AI专用语言或大数据专用语言。 然而…

Netty核心原理:一、基础入门-04:NettyServer字符串解码器

文章目录 一、前言介绍二、代码实现2.1 工程结构2.2 Netty服务端字符串解码器实现2.2.1 服务端处理器2.2.2 通道初始化2.2.3 netty服务端 2.3 单元测试 一、前言介绍 &#x1f4a1; 服务端接收数据后我们希望是一个字符串或者是一个对象类型,而不是字节码。 在 netty 中是否可以…

数据结构与算法基础-学习-33-归并排序

目录 一、基本思想 二、算法思路 1、合并两个有序序列 2、分治法 三、算法源码 1、MergeSortTwoSortData 2、TwoWayMergeSortRecurtionSentryQueue 四、算法效率分析 五、Linux环境编译测试 六、小感慨 排序的其他相关知识点和源码分享可以参考之前的博客&#xff1a…

解决 Android 依赖冲突

解决办法 问题原因就是&#xff0c;各个模块所有的依赖&#xff08;递归&#xff09;的 jar 包最后都会加载到安卓的项目中&#xff0c;你可以选择 project 形式查看 External Libraries&#xff0c;都在这了。所以解决问题关键就是干掉冲突&#xff0c;剩下一个就行了&#xf…

将Apache服务与内网穿透结合,让您的网站可以公网访问

Apache服务安装配置与结合内网穿透实现公网访问 文章目录 Apache服务安装配置与结合内网穿透实现公网访问前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpo…

2023年中国电影行业研究报告

第一章 行业概况 1.1 定义 电影行业是一门涉及电影制作、发行、放映和推广的综合艺术和商业活动。它结合了戏剧、音乐、舞蹈、绘画等多种艺术形式&#xff0c;通过视觉和听觉的方式向观众展示故事和情感。 电影不仅仅是一门艺术&#xff0c;更是一项复杂的商业运作。它涵盖了…

element el-input 二次封装

说明&#xff1a;为实现输入限制&#xff0c;不可输入空格&#xff0c;长度限制。 inputView.vue <template><!-- 输入框 --><el-input:type"type":placeholder"placeholder"v-model"input"input"inputChange":maxle…

短信轰炸漏洞绕过的多种方法技巧

前言&#xff1a; 在测试甲方业务或者挖 SRC 等业务的时候&#xff0c;经常碰到发送短信验证的地方&#xff0c;我们可以联想到的就是任意用户登陆、短信轰炸、任意用户修改密码等逻辑性的漏洞&#xff0c; 简单的漏洞也是需要清晰的思维分析&#xff0c;拿几个短信轰炸多个绕…

实战系列(三)| Mybatis和MybatisPlus区别,包含详细代码

目录 1. 底层框架&#xff1a;2. 代码差异&#xff1a;3. 使用差异&#xff1a;4. 案例代码分析&#xff1a;4.1 MyBatis4.2 MyBatisPlus MyBatis 和 MyBatisPlus 都是基于 MyBatis 的扩展库&#xff0c;用于简化 MyBatis 的开发。MyBatisPlus 是在 MyBatis 的基础上进行封装&a…