Java 8中 Objects 类源码实现与分析

2023-11-01

Objects 类位于 java.util 包下,自 JDK 1.7 版本新增的,它是一个 final 类,不能被继承,且构造函数是 private 的,不能被实例化,它提供了一系列操作Object对象的静态方法,通常会被当做工具类去使用,其类定义如下:

public final class Objects {}

Objects 类在 jdk 源码中应用很广泛,通过 Intellij Idea 搜索一下在 rt.jar 包中的应用,部分截图如下:

::: hljs-center

 

:::

从上面的搜索结果可以看出,在 jdk 1.8 版本中,大概有 366 处使用了 Objects 类的相关方法,下面结合具体的源码来分析一下。

1、构造函数

Objects 类不能被实例化,其构造函数是私有的,实现如下:

private Objects() {
    throw new AssertionError("No java.util.Objects instances for you!");
}

2、方法

Objects 类提供的静态方法大致可以分为以下的几类:

  • equals :比较两个对象是否相同
  • hash :获取对象的哈希值;
  • toString :将对象转换为字符串
  • requireNonNull :要求对象不为空
  • isNull :判断对象是否为空
  • nonNull :判断对象不为空

具体可以通过下面的结构图

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 8中 Objects 类源码实现与分析 的相关文章

  • Java中ArrayList的交集和并集

    有什么方法可以做到这一点吗 我正在寻找 但没有找到 另一个问题 我需要这些方法 以便我可以过滤文件 有些是AND过滤器 有些是OR过滤器 就像集合论中的那样 所以我需要根据所有文件和保存这些文件的联合 相交 ArrayList 进行过滤 我
  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • 如何让 BlazeDS 忽略属性?

    我有一个 java 类 它有一个带有 getter 和 setter 的字段 以及第二对 getter 和 setter 它们以另一种方式访问 该字段 public class NullAbleId private static final
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]-MySQL

    我是 Hibernate 的新手 我目前正在使用 Spring boot 框架并尝试通过 hibernate 创建数据库表 我知道以前也问过同样的问题 但我似乎无法根据我的环境找出如何修复错误 休眠配置文件
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • 使用反射覆盖最终静态字段是否有限制?

    在我的一些单元测试中 我在最终静态字段上的反射中遇到了奇怪的行为 下面是说明我的问题的示例 我有一个基本的 Singleton 类 其中包含一个 Integer public class BasicHolder private static
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url

随机推荐

  • web前端 --- 常见页面标签和语义化标签

    1 HTML5 1 含义 HTML Hypertext Markup Language 超文本标记语言 是一种用于创建网页的标准标记语言 您可以使用 HTML 来建立自己的 WEB 站点 HTML 运行在浏览器上 由浏览器来解析 声明为 H
  • Modbus 与 RS485 的区别与联系

    目前道长入坑了一家智能家居公司 以后会分享记录一些智能家居相关的知识 如果有问题 希望小伙伴交流指正 一 RS 485 1 1 RS 485 来源 RS485是美国电子工业协会 EIA 在1983年批准了一个新的平衡传输标准 balance
  • java线程状态

    1 新建 NEW 新创建了一个线程对象 2 可运行 RUNNABLE 调用了对象的start 方法 位于可运行线程池中 等待被线程调度选中 获取cpu 的使用权 3 运行 RUNNING 可运行状态 runnable 的线程获得了cpu 时
  • Django-全局配置文件&路由配置文件(二)

    一 全局配置文件 settings py 注意文件中注释 Django settings for mysite project Generated by django admin startproject using Django 2 2
  • 大数据Flink简介与架构剖析并搭建基础运行环境

    文章目录 前言 Flink 简介 Flink 集群剖析 Flink应用场景 Flink基础运行环境搭建 Docker安装 docker compose文件编写 创建并运行容器 访问Flink web界面 前言 前面我们分别介绍了大数据计算框
  • spring

    1 Spring简介 1 1 Spring概述 官网地址 https spring io Spring 是最受欢迎的企业级 Java 应用程序开发框架 数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好 易于测试 可重用的
  • 【算法】队列——解密QQ号

    新学期开始了 小哈是小哼的新同桌 小哈是个小美女哦 小哼向小哈询问QQ号 小哈当然不会直接告诉小哼啦 原因嘛你懂的 所以小哈给了小哼一串加密过的数字 同时小哈也告诉了小哼解密规则 规则是这样的 首先将第1个数删除 紧接着将第2个数放到这串数
  • CentOS7添加永久路由之一

    一 默认在系统中添加的路由会随着网络重新启动丢失 root vm al bj2 web01 route n Kernel IP routing table Destination Gateway Genmask Flags Metric R
  • Vue 渲染流程详解

    在 Vue 里渲染一块内容 会有以下步骤及流程 第一步 解析语法 生成AST 第二步 根据AST结果 完成data数据初始化 第三步 根据AST结果和DATA数据绑定情况 生成虚拟DOM 第四步 将虚拟DOM 生成真正的DOM插入到页面中
  • python针对Excel文件处理

    一 Excel文件处理介绍 需要用到第三方库 openpyxl 最常用 xlrd xlwt pandas 安装第三方库 pip install openpyxl 二 openpyxl模块 openpyxl模块的三大重要组件 1 工作簿 包含
  • 前置声明(Forward declaration)

    前置声明是指声明一个类或结构体而不定义它 比如 class A struct B 在声明之后 定义之前 该类或结构体被称为不完全类型 incompletion type 意思是 知道类型A和B 但不知道他包含哪些内容 不完全类型的使用有一些
  • pip指定路径安装文件

    pip指定路径安装文件 由于某些原因 我们使用pip命令安装一些模块时 速度慢的离谱 所以我们有时会用其他方式在网上下载资源包 以zh core web lg 2 3 1 tar gz为例 再通过pip安装 格式 pip install t
  • loadrunner+fiddler代理录制

    今天在录制脚本的时候遇到一个问题 因为公司的电脑IE版本为IE9 且不能降低版本 所以设置了个loadrunner代理 代理是设置了应用服务器的IP和端口 但是在录制的时候很多静态文件没有出来 因为loadrunner代理只能代理录制代理I
  • Spark-特征选择(scala)

    spark特征选择 基于scala语言编写 ChiSqSelector 特征选择试图识别用来构建模型的相关特征 它减少了特征空间的大小 既可以提高速度又可以提高统计学习行为的结果 ChiSqSelector实现了卡方特征选择 它能够操作带有
  • s捕捉异常处理是使用js try catch方式

    在JavaScript可以使用try catch来进行异常处理 例如 try foo bar catch e alert e name e message 目前我们可能得到的系统异常
  • Kali使用VMware安装方法。

    Kali使用VMware安装方法以及修改中文界面 一直使用的Centos系统 今天我们换种口味 来玩玩kali 1 什么是kali 手指犹如轻快的舞步在键盘上不断地敲击着 清脆的咔擦声音刺回荡在空荡的房间 黑绿色的屏幕光反射在一张恐怖的面具
  • 微信小程序是怎么做的?

    微信小程序是一种轻量级的应用 它可以在微信内部直接使用 无需下载和安装 那么 微信小程序是怎么做的呢 微信小程序制作的大概步骤 微信小程序制作主要包括以下几个步骤 注册小程序账号 在小程序制作工具创建小程序 设计小程序页面 提交审核 成功发
  • Webpack学习

    webpack是一种打包工具 安装 npm install webpack webpack cli webpack dev server D webpack配置文件 可命名 webpack config js 单个总的配置文件 也可以拆分成
  • node 模块引入与加载机制

    一 说在前面 在Node js中 以模块为单位划分功能 通过一个完整的模块加载机制使得开发人员可以将应用程序划分为多个不同的部分 模块的使用可以提高代码重用率 提高应用程序的开发效率 而且开发人员可以根据具体的需求引入第三方模块或者自定义模
  • Java 8中 Objects 类源码实现与分析

    Objects 类位于 java util 包下 自 JDK 1 7 版本新增的 它是一个 final 类 不能被继承 且构造函数是 private 的 不能被实例化 它提供了一系列操作Object对象的静态方法 通常会被当做工具类去使用