你知道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) 对象的属性值一样 ...
随机推荐
- raid5+lvm随笔
1.准备磁盘,先做raid,再做lvm; /dev/sdb /dev/sdc /dev/sdd /dev/sde [root@localhost ~]# mdadm -C -v /dev/md5 ...
- vue3-使用百度地图遇到的坑-地图实例化
1.创建地图实例 原因:在使用vue3为了只定义一次地图实例,在所有方法中使用,直接使用如下定义方式: setup() { const data = reactive({ bmap: null,}) ...
- UniDBGrid控件的几个功能优化
内容自动换行 默认UniDBGrid的cell内的内容如果超出表格列宽并不自动换行和调整行高,给客户带来极大的不方便,通过修改ServerModule的属性CustomCSS可以实现. <sty ...
- PHP文件及运行(适合PHP初学者)
PHP文件可包含HTML.JavaScript代码和 PHP代码,换句话说PHP 代码可以嵌入HTML文档.PHP文件名以php为后缀. PHP代码以"<?php"开头,以& ...
- egret 当前运行环境
if(egret.Capabilities.runtimeType == egret.RuntimeType.WXGAME){}
- web目录扫描工具
在对Web网站进行审计时,首先我们会对进场出现的/admin和robots.txt等信息和目录进行初步的审计获取重要的信息,但是手动猜测目录过于缓慢,使用工具能够迅速的爆破出目录 目录爆破取决于字典的 ...
- Android错误之--Error retrieving parent for item: No resource found that matches the given name 'Theme.A
改正错误 (虽然内容较少,但是还是选择单独占用一篇) 这个错误,可以说是困扰了我好久,然后就看到可以改变一下使用的Android版本,改成Android 4.0,然后就去试了试,发现真的就好了耶! 就 ...
- CF859E题解
题意简述 翻译很清楚了 题目解法 如果一个人想去的位置上原来坐着人,那么他要坐到这个位置上,就要把原来的人赶走. 原来的人被赶走了,就只能去想去的位置.如果那个位置上有人,又要把那个人赶走. 我们发现 ...
- 使用 Netty 实现简单的 RPC 框架
Dubbo 底层使用 Netty 作为网络通信框架.[网络传输问题]:相对于传统的 RPC 或者 RMI 等方式的远程服务过程调用采用了同步阻塞IO,当客户端的并发压力或者网络时延增长之后,同步阻塞 ...
- Quicker快速开发,简单的网页数据爬取(示例,获取天眼查指定公司基础工商数据)
前言 有某个线上项目,没有接入工商接口,每次录入公司的时候,都要去天眼查.企查查或者其他公开数据平台,然后手动录入,一两个还好说,数量多了的重复操作就很烦,而且,部分数据是包含超链接,一不注意就点进去 ...
