你知道Object类和Objects的常用方法吗
大家好,Leo又来了!!!最近在网上看到别人分析Objects中isNullfanfan方法来判断,我就想到之前写的一坨坨==null,突然很惭愧,特地去研究学习下,争取下次可以用上.
Object的常用方法
| 方法 | 作用 |
|---|---|
| clone() | 创建此对象的副本 |
| equals() | 判断他与某个对象是否“相等” |
| getClass() | 返回此类运行时类,通过在反射时会用到 |
| hashCode() | 获取到这个对象的哈希码值 |
| notify() | 唤醒在对象监听器上等待的一个线程 |
| notifyAll() | 唤醒在此对象监听器上等待的所有线程 |
| toString() | 返回此对象的字符串表示 |
| wait() | 让当前线程进入等待状态 |
Objects的常用方法
hashCode
每一个对象都有自己的hashCode,不同对象的hashCode可能相同
hash
在Objects中,hash是传入参数是一个不定长度的参数,底层也是
isNull
在Objects中这个方式判断对象是否为null是非常优雅的,比如下面这段代码,如果每一个都用 == null,属实是比较乱了,但是如果我们使用isNull这种写法会简洁并且明了很多,代码也更加统一
@Override
@Transactional(rollbackFor = Exception.class)
public void updateStudentById(Student student) {
if (null == student) {
throw new RuntimeException("对象为空,更新失败!");
}
if (Objects.isNull(student)) {
throw new RuntimeException("对象为空,更新失败!");
}
}
equals
这个方法在判断两个对象是否相等,或者字符串是否相等非常常用,那使用这个方法时也需要考虑一个问题就是a.equals(b),a不能为null,否则会抛出NullPointerException,但是在Objects.equals方法是可以很好避免这个问题,我们就可以减少对a是否非null的判断,在equals中是已经进行了判断
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}

requireNonNull
requireNonNull方法传入一个对象,如果这个对象为null,就抛出空指针异常,也可以自定义抛出的异常信息message
public static <T> T requireNonNull(T obj) {
if (obj == null)
throw new NullPointerException();
return obj;
}
compare
主要用于比较,我们可以自定义对应的比较器。

nonNull
可以用来判断对象是否非空
public static boolean nonNull(Object obj) {
return obj != null;
}
总之,希望大家可以把Objects这样的类用起来,让自己的代码长的更好看点啦
你知道Object类和Objects的常用方法吗的更多相关文章
- java 常用类库:Object类和Objects类
1,Object类: Object类是所有的类,数组,枚举的父类,也就是说,JAVA中允许把任何的对象赋值给Object类(包括基础数据类型),当定义一个类的时候,没有使用extends关键字显示指定 ...
- 写出java.lang.Object类的六个常用方法
java是面向对象的语言,而Object类是java中所有类的顶级父类(根类). 每个类都使用Object类作为超类,所有对象(包括数组)都实现这个类的方法,即使一个类没有用extends明确指出继承 ...
- Java基础之Java常用类--Object类,字符串相关类,包装类,日期相关类,数字相关类
Java是一种面向对象的语言,也就是将万事万物可以描述为对象,特点如下: 1.面向对象是常见的一种思考习惯,符合人们的思考习惯.2.面向对象的出现,将复杂的事情简单化.3.面向对象的出现,将之前过程中 ...
- 【转载】JAVA基础复习与总结<三> Object类的常用方法
Object类是一个特殊的类,是所有类的父类,如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类.这里主要总结Object类中的三个常用方法:toString().equ ...
- Object类的常用方法
Object类是Java中所有类的始祖.如果没有明确的指定继承,则默认继承Object类.在Java中除了基本类型外都是Object类型的对象,包括数组. 1)equals方法 Object: pub ...
- Object类及其常用方法简介
https://www.cnblogs.com/wxywxy/p/6740277.html Object类是一个特殊的类,是所有类的父类,如果一个类没有用extends明确指出继承于某个类,那么它默认 ...
- 包和访问权限修饰符,.单例设计模式,.Object类常用方法,.内部类
1.包和访问权限修饰符 1.1 包 为什么要导包? 将字节码文件(.class)文件进行分类存放 --->包 其实就是文件夹 import java.util.Arrays; 包的划分规则 方案 ...
- 最终父类【根类】:Object类&Objects类
一.java.lang.Object类 1.Object类介绍 Object类是所有类的父类.一个类都会直接或间接继承自该类: 该类中提供了一些非常常用的方法! 2.toString()方法 A: ...
- Object类的toString和Equals方法,以及Objects类的Equals方法
Object类 toString()方法 public class Person { private String name; private int age; public Person() { } ...
- 重写Object类的equals方法-Objects类的equals方法
重写Object类的equals方法 Object类的equals方法默认比较的是两个对象的地址值,没有意义所以我们学要重写equals方法,比较两个对象的属性值(name,age) 对象的属性值一样 ...
随机推荐
- 使用ansible批量推送公钥
准备两个yml文件 send-pubkey.yml - hosts: all remote_user: root # 连接远程主机的用户,密码就是文件中设置好的 ansible_ssh_pass 的值 ...
- Codeforces Round #803 (Div. 2) A-D 刚vp完还没补题
Codeforces Round #803 (Div. 2) 2022/7/24 上午VP 传送门:https://codeforces.com/contest/1698 A. XOR Mixup 随 ...
- Leecode 1.两数之和(Java 哈希表)
想法: 1.哈希表hashmap 第一种方法:将数组中元素及其下标right都加入hashmap中,对于每个元素n下标left,在map中查找是否有target-n的元素,若有,则返回其下标right ...
- python requests 上传文件_python3使用requests上传文件,content-type踩的坑
通常提交普通表单时,requests的post方法可以指定headers,所以我在使用requests模拟上传文件行为时,直接按照下面的方式写了: 然后服务器就报出了找不到分隔符Invalid mul ...
- Old ST-LINK firmware detected.do you want to upgrade it?升级固件
一段时间没有使用st-link烧写程序了.打开keil5准备把程序烧写到stm32板子上时,报错Old ST-LINK firmware detected.do you want to upgrade ...
- beta冲刺:总结随笔
这个作业属于哪个课程 <班级的链接> 这个作业要求在哪里 <作业要求的链接> 这个作业的目标 beta冲刺总结 作业正文 .... 其他参考文献 ... 一.预期计划 | 6. ...
- redis的数据操作和python操作redis+关系非关系数据库差异
关系型数据库(RMDBS) 数据库中表与表的数据之间存在某种关联的内在关系,因为这种关系,所以我们称这种数据库为关系型数据库. 典型:Mysql/MariaDB.postgreSQL.Oracle.S ...
- Blazor项目在VisualStudio调试时配置运行基础目录
最近在使用 Blazor 开发管理后台时遇到了如下的问题,我这里后台整体采用了 AntDesignBlazor 组件库,在上线之后发现ReuseTabs组件在使用过程中,如果默认 / 没有指定为项目的 ...
- MySQL学习(三)DQL/DML/DDL/DCL 介绍
参考博客:https://blog.csdn.net/tomatofly/article/details/5949070 DQL(data query language) :数据查询语言 select ...
- 从零开始学习Java系列之Java运行机制与跨平台特性
全文大约[4000]字,不说废话,只讲可以让你学到技术.明白原理的纯干货!并带有丰富的案例及配图,让你更好地理解和运用文中的技术概念,给你带来具有足够启迪的思考-- 在上一篇文章中,壹哥给大家介绍了J ...
