Objects类源码分析

1.这个类的基本说明:

Objects类源码分析

从这段代码,可以看出,这个类包括了非空检查、方法的非空参数检查、 比较对象的hashCode、为对象返回一个字符串表示、比较两个对象。

 

2.构造方法

Objects类源码分析

1、这个类从jdk1.7开始出现的;

2、该类是使用final修饰的,不能被继承;

3、该类的构造方法被私有化(使用private修改),不能直接创建对象

4、该类中所有的方法都是静态的,可以使用类名点直接调用,不需要创建对象。

所以,如果工作中,写工具类也可以私有化构造方法,同时抛一个异常。

3.静态方法

Objects类源码分析

equals:比较2个对象是否相等,以后工作中有需要的话,可以直接用jdk这个工具类的方法判断。

Objects类源码分析

deepEquals:深度比较2个对象是否相等。如果==的话,返回true,如果任意一个为null,返回false,否则,用Arrays.deepEquals方法比较是否相等

Objects类源码分析

hashCode:返回一个对象的hash值,对象为null时,返回0.

Objects类源码分析

hash:传入多个对象时,返回一个hash值,如果对象只有一个时,这个值不等于引用地址的hash值,可以用hashCode方法计算。

Objects类源码分析

 

toString:将对象转成字符串。

Objects类源码分析

toString(Object 0,String nullDefault):将对象转成字符串,如果字符串为null,则为nullDefault,也就是当字符串为null时可以设置默认值。

Objects类源码分析

compare:使用指定的比较器比较2个数的大小。其中一个数为null时是否抛出异常,取决于所选的比较器。

Objects类源码分析

requireNonNull:判空操作。

Objects类源码分析

requireNonNull(Object o,String message):判空操作,当为控制,跑出异常,异常信息为message。

Objects类源码分析

inNull:对象是否为null,该方法从jdk1.8才开始有的。

Objects类源码分析

nonNull:对象是否不为null,该方法从jdk1.8才开始有的。

Objects类源码分析

requireNonNullElse(T obj,T defaultObj):当obj不为null,返回obj,否则,判断defaultObj是否为null,不为null,返回defaultObj,为null,返回字符串“defaultObj”。该方法从jdk9开始才有的。

Objects类源码分析

requireNonNullElseGet(T obj,Supplier<? extends T>supplier):当obj不为null,返回obj,否则,判断supplier是否为null,不为null,再判断supplier.get()是否为null,不为null,返回字符串supplier.get()。该方法从jdk9开始才有的。

Objects类源码分析

requireNonNull(T obj,Supplier<String> messageSupplier):判断对象是否为null,为null时,抛出用户自定义异常。这个从jdk1.8开始才有的。

Objects类源码分析

checkIndex:从jdk9开始才有的方法。

@ForceInline注解,当HotSpot VM内联方法或构造函数时,如果要忽略标准内联指标,那么可以将方法或构造函数注释为“force inline”。

必须谨慎使用此注释。当惟一合理的替代方法是将特定方法或构造函数的名称绑定到HotSpot VM中,以便内联策略进行特殊处理时,这种方法非常有用。

不能依赖该注释作为避免调优VM内联策略的替代方法。在一些情况下,它可能充当临时的解决方案,直到HotSpot VM执行的分析和内联得到足够的改进。

此注释仅对引导加载程序加载的类的方法或构造函数生效。在引导加载程序之外加载的类的方法或构造函数上的注释将被忽略。

Objects类源码分析

checkFromToIndex:该方法从jdk9开始才有的。

Objects类源码分析

checkFromIndexSize:该方法从jdk9开始才有的。

Objects类源码分析

转载于:https://my.oschina.net/u/3944601/blog/3040835