Objects类源码分析

1.这个类的基本说明:

Objects类源码分析_第1张图片

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

 

2.构造方法

2b6f9d21b571a3ec5853386ce054b0d2149.jpg

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

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

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

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

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

3.静态方法

Objects类源码分析_第2张图片

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

68edf91082ed50f99ed34d7a54e492cfa2c.jpg

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

Objects类源码分析_第3张图片

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

a2d02e9cc63cc62a8b78fe657e9bd4c1b84.jpg

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

0cda173070bb4b2d2bf77ec865eec5571e5.jpg

 

toString:将对象转成字符串。

4c7a6bb552a1cc8a972f6bafa5a1427970e.jpg

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

ca68ba8ccb98966433ab006be92cd650b1e.jpg

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

4de5ebe6532789a791698c19bfd82a5b09a.jpg

requireNonNull:判空操作。

Objects类源码分析_第4张图片

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

Objects类源码分析_第5张图片

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

bbb9112a63aa2c30481975575ed1940f1b2.jpg

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

ff856c6829c4803ae962309845dcd140f0c.jpg

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

ff9d4acf4c208844b93da2e99eee5926bd5.jpg

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

95281b1a65c32c07f6f71a3ce633b4bde75.jpg

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

Objects类源码分析_第6张图片

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

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

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

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

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

Objects类源码分析_第7张图片

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

5593a79ff4885e6d6dbb9d63d2991e6fabf.jpg

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

b6d94ad7a9bc1895a07c3ed874d3f49024d.jpg

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

你可能感兴趣的:(java)