ps

最近发现自己对于类的认知越来越少,于是决定深入一下自己的基础,决定从jdk的每个类开始探索,这个记录自己的笔记,大纲想了几点,还不是很完善,边写边完善,如果有好的大纲建议,还希望多多指教

大纲

大纲
简介
配合jdk 文档讲解
代码设计的优缺点
如何使用
参考博客

简介

Objects 是一个工具类,我这里就直接用oracel的文档了
网址 https://docs.oracle.com/javase/8/docs/api/java/util/Objects.html#compare-T-T-java.util.Comparator-

代码设计的优缺点

因为是新手,也是正在慢慢学习,所以我就说一说我三年工作经验觉得的优点吧
1.requireNonNull(obj)
这个方法是校验传入的参数是不是等于null,看过spring源码的同学肯定都知道,代码里有大量的校验参数是否符合所需条件,然后抛出异常的方法,我想通过举个简单的例子说一说这样做的好处
平常我们开发后端需要在controller里面捕捉异常,可是我们dao里面写的方法如果异常,需要向上抛类似于这样

    @Testpublic void testToString2() throws NullPointerException{   //主要是这,有异常需要向上抛}

这样的话我们拉来回回需要抛3遍 还要在controller里面try cache
如果用工具类 我们就可以这样

@Testpublic void requireNonNull() {// 判断传入的参数如果是null 则抛出异常Objects.requireNonNull(null);}

这样只需要try cache就可以了,甚至直接用spring带来的注解,后,连try cache都不需要,这就是框架给我们带来的优势,也是java语言的特性

如何使用

为此我建了个自己的笔记记录项目
https://gitee.com/hugo110/common-utils/blob/master/src/test/java/jdk/util/ObjectsTest.java

package jdk.util;import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;import java.util.Comparator;
import java.util.Objects;import org.junit.Test;import com.fanfan.code.model.BeanMode;/*** @see https://docs.oracle.com/javase/9/docs/api/java/util/Objects.html* * @ClassName ObjectsTest2* @author <a href="892042158@qq.com" target="_blank">于国帅</a>* @date 2019年1月15日 下午9:52:38**/
public class ObjectsTest {@Testpublic void testCompare11s​() {BeanMode bean = new BeanMode();bean.setBeanLong(13L);BeanMode bean2 = new BeanMode();bean2.setBeanLong(13L);System.err.println(bean2.equals(bean2));int flag = Objects.compare(bean2, bean, new Comparator<BeanMode>() {// 实际运用中,可能比较两个model的id是否相等 或者model的某个值,@Overridepublic int compare(BeanMode o1, BeanMode o2) {if (o1 == o2) {return 0;}if (o1 != null && o1.equals(o2)) {return 0;}if (o2 != null && o1.getBeanLong() == o2.getBeanLong()) { // 只判断缓存值return 0;}return -1;}});assertEquals(flag, 0L);}// 深度比较java 基本类型@Testpublic void deepEquals() {// 参考 Arrays.deepEquals0();}@Testpublic void equals() {// 比较基本类型String str = "";String str2 = "";System.err.println(Objects.equals(str, str2));// 比较对象 肯定不相等,相等需要重写对象的equalsBeanMode beanModel = new BeanMode();BeanMode beanModel2 = new BeanMode();System.err.println(Objects.equals(beanModel, beanModel2));}@Testpublic void testHash​() {BeanMode beanModel = new BeanMode();// 为一系列输入值生成哈希码。生成哈希代码,好像所有输入值都放在一个数组中,并通过调用对该数组进行哈希处理Arrays.hashCode(Object[])System.err.println(Objects.hash(beanModel));}@Testpublic void testHashCode() {// 返回非null参数的哈希码,参数返回0 nullBeanMode beanModel = new BeanMode();System.err.println(Objects.hashCode(beanModel));System.err.println(Objects.hashCode(2L));System.err.println(Objects.hashCode("2"));}@Testpublic void isNull() {String nullStr = null;boolean flag = Objects.isNull(nullStr);assertTrue(flag);}@Testpublic void nonNull​() {// 与isNull 相反 判断不等于nullboolean flag = Objects.nonNull(null);assertFalse(flag);}@Testpublic void requireNonNull() {// 判断传入的参数如果是null 则抛出异常Objects.requireNonNull(null);Objects.requireNonNull(null, "测试信息");}@Testpublic void testToString() {System.err.println(Objects.toString(Integer.valueOf(1)));System.err.println(Objects.toString(null, "22"));}}

参考博客

https://docs.oracle.com/javase/8/docs/api/java/util/Objects.html#compare-T-T-java.util.Comparator-

笔记记录

https://gitee.com/hugo110/xmind-common/blob/master/公共模块学习笔记/JDK/rt.jar(java1.8_45探索).xmind

一步步认识jdk 我们的朋友 之Objects相关推荐

  1. 一步步认识jdk 我们的朋友 之Arrays

    ps 最近发现自己对于类的认知越来越少,于是决定深入一下自己的基础,决定从jdk的每个类开始探索,这个记录自己的笔记,大纲想了几点,还不是很完善,边写边完善,如果有好的大纲建议,还希望多多指教 大纲 ...

  2. JDK 9:NotNullOrElse方法已添加到Objects类

    JDK 9向Objects类添加了一些新方法,包括本文中突出显示的两个static方法: requireNonNullElse(T,T)和requireNonNullElseGet(T obj,Sup ...

  3. 桌面文件夹不见了怎么恢复?4招教你找回消失的文件夹

    电脑桌面上放置着很多文件夹或者软件,看起来杂乱无章,一不小心就可能把桌面的文件夹给删除了.桌面文件夹被删除了怎么恢复?本文将推荐4种方法教你找回消失的文件夹,小编将通过图文讲解的方法来一步步展开,需要 ...

  4. 进入路由器linux系统时间长,linux 路由器限速实现方法教程

    作为不同网络之间互相连接的枢纽,路由器系统构成了基于TCP/IP 的国际互联网络Internet 的主体脉络,也可以说,路由器构成了Internet的骨架.这篇文章主要介绍了linux 路由器限速实现 ...

  5. 第一讲如何培养孩子养成良好的学习习惯

    吾阅:好习惯是在银行存钱,它的利息使人终生受益:坏习惯是欠银行一笔高利贷,怎么还也还不清: ------------------------------------------------------ ...

  6. Java 的这些坑,你踩到了吗?

    前言 中国有句老话叫"事不过三",指一个人犯了同样的错误,一次两次还可以原谅,再多就不可原谅了.写代码也是如此,同一个代码"坑",踩第一次叫"长了经验 ...

  7. objects jdk8_JDK 9:NotNullOrElse方法已添加到Objects类

    objects jdk8 JDK 9向Objects类添加了一些新方法,包括本文中突出显示的两个static方法: requireNonNullElse(T,T)和requireNonNullElse ...

  8. String.valueOf(Object)与Objects.toString(Object)

    便捷的方法String.valueOf(Object) 自JDK 1.0起就存在,并且是我经常使用的JDK提供的方法之一. 我以前曾在博客上评论过它的价值 . JDK 1.7引入了 Objects类 ...

  9. 阿里技术|Java 的这些坑,你踩到了吗?

    阿里妹导读:日常开发中总会遇到各种各样的"坑",如何提前规避呢?本文将分享 Java 开发中容易遇到的一些坑,并给出详细的问题解析和避坑方法. 前言 中国有句老话叫"事不 ...

最新文章

  1. 【quickhybrid】组件(自定义)API的实现
  2. Webpack构建library时的踩坑经历
  3. ThreadPool.QueueUserWorkItem的用法
  4. 华为的发展与管理浅析
  5. cat--创建多维数组
  6. CSS3如何实现0.5边框
  7. SQL-字符串运算符和函数
  8. python编程学习_使用EduBlocks轻松学习Python编程
  9. 设置div的高度_html中如何让div居中
  10. signature=7a6addc49a87cb6a44a8da5a20a59d1f,Disks and Halos in Pre-Main-Sequence Stars
  11. android 下载apk后如何安装程序,Android下载并安装APK
  12. 4011: [HNOI2015]落忆枫音
  13. GROMOS拓扑(、坐标、轨迹、能量)相关文件解读手册第5章阅读笔记II
  14. uniapp 开发电视机APP 基座连接电视机
  15. ES6高级:扩展运算符,箭头函数,class类,iterator迭代器
  16. OPPO、华为、烽火、海能达、腾讯、阿里、德昌面试经验
  17. 【语音控制SU-03T的使用】
  18. BS和CS架构,软件开发的瀑布模型,快速原型模型、螺旋模型、敏捷开发、软件测试分类,测试的分类和理解
  19. poi设置表格内容水平垂直居中
  20. CPU 时间片轮转机制 (RR 调度)

热门文章

  1. python 中的socket模块——网络编程(一)
  2. “大闸蟹” 英语怎么说?
  3. mysql 存储过程加密工具_MySQL存储过程调试工具-dbForge Studio for MySQL
  4. 类变量和实例变量的区别
  5. Medical Diffusion - Denoising Diffusion Probabilistic Models for 3D Medical Image Generation
  6. 第21,22,23天 咳咳
  7. 曼达洛人对机器人的评价_机器人作文评语大全
  8. ssis连接oracle报错,SSIS 连接Oracle报错 These components are supplied by Oracle
  9. Android APN的显示流程源代码分析
  10. 产品经理(14)#移动端产品设计