Objets类介绍
- java.lang.Object java.util.Objects
所有类都继承Object类,Object是util包中的类,使用时要导包。- public final class Objects extends Object
用final修饰,不能被继承。- 主要用于null的操作,API中是这样描述的:此类包含static实用程序方法,用于操作对象或在操作前检查某些条件。 这些实用程序包括null或null方法,用于计算对象的哈希代码,返回对象的字符串,比较两个对象,以及检查索引或子范围值是否超出范围。
方法一:checkFromIndexSize
public static int checkFromIndexSize(int fromIndex, int size, int length)
从jdk9开始有的方法;
检查fromIndex(包括) ~ (fromIndex+size)(不包括)是否在0(包括) ~ length(不包括)之间。
例:
int num = Objects.checkFromIndexSize(5,0,10);
System.out.println(num);//输出5
int num = Objects.checkFromIndexSize(2,3,10);
System.out.println(num);//输出2
int num = Objects.checkFromIndexSize(4,7,10);
System.out.println(num);//抛出数组越界异常
int num = Objects.checkFromIndexSize(11,0,10);
System.out.println(num);//抛出数组越界异常
方法二:checkFromToIndex
public static int checkFromToIndex(int fromIndex, int toIndex, int length)
jdk9;
检查formIndex(包括) ~ size(不包括)是否在0(包括) ~length(不包括)之间;
例:
int num = Objects.checkFromIndexSize(2,3,10);
System.out.println(num);//输出2
int num = Objects.checkFromIndexSize(3,2,10);
System.out.println(num);//输出3
int num = Objects.checkFromIndexSize(3,11,10);
System.out.println(num);//抛出数组越界异常
方法三:checkIndex
public static int checkIndex(int index, int length)
jdk9;
检查index是否在0 ~ length之间;上述三个方法用时仔细查看API;
例:
int num = Objects.checkIndex(5,10);
System.out.println(num);//输出5
int num = Objects.checkIndex(10,10);
System.out.println(num);//数组越界异常
方法四:compare
public static <T> int compare(T a, T b, Comparator<? super T> c)
如果a和b相同,返回c.compare(a, b) o,否则返回c.compare(a, b);
这个方法一般在实现Comparator时使用。实例略。
方法五:deepEquals
public static boolean deepEquals(Object a, Object b)
返回值为true,a和b要么都是null,要么equals相等;如果两个参数都是数组,则使用Arrays.deepEquals中的算法来确定相等性。
主要用于equals比较时,不知道哪边为null时使用;
例:
System.out.println(Objects.deepEquals(null,null));//true
System.out.println(Objects.deepEquals(null,"abc"));//false
System.out.println(Objects.deepEquals("abc",null));//false
主要用于判断:
String s = "";
System.out.println(s.equals("abc"));//java.lang.NullPointerException
方法六:equals
public static boolean equals(Object a, Object b)
和上面方法区别在于数组判断,其他用法相似;实例略;
方法七:isNull
public static boolean isNull(Object obj)
用于判断obj是否为空,为空返回true,否则为false;
例:
System.out.println(Objects.isNull(null));//true
System.out.println(Objects.isNull(123));//false
方法八:nonNull
public static boolean nonNull(Object obj)
和上述方法相反,为为空返回false,否则返回true
例:
System.out.println(Objects.nonNull(null));//false
System.out.println(Objects.nonNull(123));//true
方法九:requireNonNull
public static <T> T requireNonNull(T obj)
检查指定的对象引用是否不是null 。 此方法主要用于在方法和构造函数中进行参数验证,如下所示:
public Foo(Bar bar) {
this.bar = Objects.requireNonNull(bar);
}
方法十:requireNonNull
public static <T> T requireNonNull(T obj, String message)
检查指定的对象引用是否为null ,如果是,则抛出自定义的NullPointerException 。 此方法主要用于在具有多个参数的方法和构造函数中进行参数验证,如下所示:
public Foo(Bar bar, Baz baz) {
this.bar = Objects.requireNonNull(bar, “bar must not be null”);
this.baz = Objects.requireNonNull(baz, “baz must not be null”);
}
其余方法不常用,不列出。