之所以写这篇文章,是因为工作中接触到一个开源项目代码,而这个开源代码使用到了这个类。同时如果不是前面的包名java.util,都很容易看错成java超类java.lang.Object。
java.util.Objects是java1.7新增的一个类。下面这篇文章将基于1.7.0_80版本的类库源码展开。
一、类定义:
package java.util;
/**
* @since 1.7
*/
public final class Objects {
我去掉了类上面的注释,只保留了一个注解标签,用来记住这个类是自1.7开始出现的。另外需要注意的是这个类用关键字final修饰了,意味着它不能被继承。
二、构造函数:
private Objects() {
throw new AssertionError("No java.util.Objects instances for you!");
}
只有这么一个构造函数,并且声明为private,构造函数中抛出一个AssertionError。这两点结合起来看,意味着:这个类不可以实例化。(这里我们不考虑反射打破这一规则的问题)
综合三点,(1)java.util包下面的类;(2)不可以被继承;(3)不能实例化。
可以推测,这个类八九不离十,是个工具类。