Java : Objects with Examples
Objects (Java SE 18 & JDK 18) API Examples.
You will find code examples on most Objects methods.
Summary
final String str1 = null;
final String str2 = "abcd";
System.out.println(Objects.equals(str1, str2)); // false
System.out.println(Objects.equals(str1, null)); // true
System.out.println(Objects.equals(str2, "abcd")); // true
System.out.println(Objects.hash(123, 789, "abc")); // 268807
final var list = new ArrayList<String>();
list.add("a");
list.add(null);
list.add("b");
list.add(null);
list.add("c");
System.out.println(list); // [a, null, b, null, c]
final var result = list.stream().filter(Objects::nonNull).toList();
System.out.println(result); // [a, b, c]
Methods
static int checkFromIndexSize (int fromIndex, int size, int length)
System.out.println(Objects.checkFromIndexSize(0, 0, 5)); // 0
System.out.println(Objects.checkFromIndexSize(0, 1, 5)); // 0
System.out.println(Objects.checkFromIndexSize(0, 2, 5)); // 0
System.out.println(Objects.checkFromIndexSize(0, 3, 5)); // 0
System.out.println(Objects.checkFromIndexSize(0, 4, 5)); // 0
System.out.println(Objects.checkFromIndexSize(0, 5, 5)); // 0
//Objects.checkFromIndexSize(0, 6, 5); // IndexOutOfBoundsException
System.out.println(Objects.checkFromIndexSize(3, 0, 5)); // 3
System.out.println(Objects.checkFromIndexSize(3, 1, 5)); // 3
System.out.println(Objects.checkFromIndexSize(3, 2, 5)); // 3
//Objects.checkFromIndexSize(3, 3, 5); // IndexOutOfBoundsException
System.out.println(Objects.checkFromIndexSize(0, 1, 5)); // 0
System.out.println(Objects.checkFromIndexSize(1, 1, 5)); // 1
System.out.println(Objects.checkFromIndexSize(2, 1, 5)); // 2
System.out.println(Objects.checkFromIndexSize(3, 1, 5)); // 3
System.out.println(Objects.checkFromIndexSize(4, 1, 5)); // 4
//Objects.checkFromIndexSize(5, 1, 5); // IndexOutOfBoundsException
//Objects.checkFromIndexSize(-1, 0, 5); // IndexOutOfBoundsException
//Objects.checkFromIndexSize(0, -1, 5); // IndexOutOfBoundsException
//Objects.checkFromIndexSize(0, 0, -1); // IndexOutOfBoundsException
static long checkFromIndexSize (long fromIndex, long size, long length)
Please see checkFromIndexSize(int fromIndex, int size, int length). This method is for a long type.
static int checkFromToIndex (int fromIndex, int toIndex, int length)
System.out.println(Objects.checkFromToIndex(0, 0, 5)); // 0
System.out.println(Objects.checkFromToIndex(0, 1, 5)); // 0
System.out.println(Objects.checkFromToIndex(0, 2, 5)); // 0
System.out.println(Objects.checkFromToIndex(0, 3, 5)); // 0
System.out.println(Objects.checkFromToIndex(0, 4, 5)); // 0
System.out.println(Objects.checkFromToIndex(0, 5, 5)); // 0
//Objects.checkFromToIndex(0, 6, 5); // IndexOutOfBoundsException
//Objects.checkFromToIndex(3, 2, 5); // IndexOutOfBoundsException
System.out.println(Objects.checkFromToIndex(3, 3, 5)); // 3
System.out.println(Objects.checkFromToIndex(3, 4, 5)); // 3
System.out.println(Objects.checkFromToIndex(3, 5, 5)); // 3
//Objects.checkFromToIndex(3, 6, 5); // IndexOutOfBoundsException
System.out.println(Objects.checkFromToIndex(0, 5, 5)); // 0
System.out.println(Objects.checkFromToIndex(1, 5, 5)); // 1
System.out.println(Objects.checkFromToIndex(2, 5, 5)); // 2
System.out.println(Objects.checkFromToIndex(3, 5, 5)); // 3
System.out.println(Objects.checkFromToIndex(4, 5, 5)); // 4
System.out.println(Objects.checkFromToIndex(5, 5, 5)); // 5
//Objects.checkFromToIndex(6, 5, 5); // IndexOutOfBoundsException
//Objects.checkFromToIndex(-1, 0, 5); // IndexOutOfBoundsException
//Objects.checkFromToIndex(0, -1, 5); // IndexOutOfBoundsException
//Objects.checkFromToIndex(0, 0, -1); // IndexOutOfBoundsException
static long checkFromToIndex (long fromIndex, long toIndex, long length)
Please see checkFromToIndex(int fromIndex, int toIndex, int length). This method is for a long type.
static int checkIndex (int index, int length)
//Objects.checkIndex(-1, 5); // IndexOutOfBoundsException
System.out.println(Objects.checkIndex(0, 5)); // 0
System.out.println(Objects.checkIndex(1, 5)); // 1
System.out.println(Objects.checkIndex(2, 5)); // 2
System.out.println(Objects.checkIndex(3, 5)); // 3
System.out.println(Objects.checkIndex(4, 5)); // 4
//Objects.checkIndex(5, 5); // IndexOutOfBoundsException
//Objects.checkIndex(0, 0); // IndexOutOfBoundsException
//Objects.checkIndex(0, -1); // IndexOutOfBoundsException
static long checkIndex (long index, long length)
Please see checkIndex(int index, int length). This method is for a long type.
static <T> int compare (T a, T b, Comparator<? super T> c)
final var c = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
if (o1 < o2) {
return -1;
} else if (o1 > o2) {
return 1;
} else {
return 0;
}
}
};
System.out.println(Objects.compare(null, null, c)); // 0
System.out.println(Objects.compare(0, 5, c)); // -1
System.out.println(Objects.compare(5, 0, c)); // 1
System.out.println(Objects.compare(123, 123, c)); // 0
static boolean deepEquals (Object a, Object b)
final var str1 = "aaa";
final var str2 = "aaa";
System.out.println(Objects.equals(str1, str2)); // true
System.out.println(Objects.deepEquals(str1, str2)); // true
final var str3 = "bbb";
System.out.println(Objects.equals(str1, str3)); // false
System.out.println(Objects.deepEquals(str1, str3)); // false
final String[] array1 = {"a", "b", "c"};
final String[] array2 = {"a", "b", "c"};
System.out.println(Objects.equals(array1, array2)); // false
System.out.println(Objects.deepEquals(array1, array2)); // true
final String[] array3 = {"x", "y", "z"};
System.out.println(Objects.equals(array1, array3)); // false
System.out.println(Objects.deepEquals(array1, array3)); // false
final int[][] array1 = {
{1, 2}, {3, 4},
{5, 6}, {7, 8}
};
final int[][] array2 = {
{1, 2}, {3, 4},
{5, 6}, {7, 8}
};
System.out.println(Objects.equals(array1, array2)); // false
System.out.println(Objects.deepEquals(array1, array2)); // true
final int[][] array3 = {
{1, 2}, {3, 4},
{100, 200}, {300, 400}
};
System.out.println(Objects.equals(array1, array3)); // false
System.out.println(Objects.deepEquals(array1, array3)); // false
System.out.println(Objects.deepEquals(null, null)); // true
System.out.println(Objects.deepEquals(null, 1)); // false
System.out.println(Objects.deepEquals(2, null)); // false
static boolean equals (Object a, Object b)
System.out.println(Objects.equals(1, 2)); // false
System.out.println(Objects.equals(3, 3)); // true
System.out.println(Objects.equals("abc", "def")); // false
System.out.println(Objects.equals("xxx", "xxx")); // true
System.out.println(Objects.equals("123", 123)); // false
System.out.println(Objects.equals(null, null)); // true
System.out.println(Objects.equals(null, 1)); // false
System.out.println(Objects.equals(2, null)); // false
final String[] array1 = {"a", "b", "c"};
final String[] array2 = {"a", "b", "c"};
System.out.println(Objects.equals(array1, array2)); // false
System.out.println(Objects.deepEquals(array1, array2)); // true
static int hash (Object... values)
System.out.println(Objects.hash(1)); // 32
System.out.println(Objects.hash(1, 2)); // 994
System.out.println(Objects.hash(2, 1)); // 1024
System.out.println(Objects.hash(1, 2, 3)); // 30817
System.out.println(Objects.hash("a", "b", "c")); // 126145
System.out.println(Objects.hash(1, 2, 3, "a", "b", "c")); // 918165601
final int[] array1 = {1, 2, 3};
final int[] array2 = {1, 2, 3};
final int[] array3 = {4, 5, 6};
System.out.println(Objects.hash(array1)); // 1544785573
System.out.println(Objects.hash(array2)); // 664022656
System.out.println(Objects.hash(array3)); // 1426882641
System.out.println(Arrays.hashCode(array1)); // 30817
System.out.println(Arrays.hashCode(array2)); // 30817
static int hashCode (Object o)
System.out.println(Objects.hashCode(null)); // 0
System.out.println(Objects.hashCode(123)); // 123
System.out.println(Objects.hashCode("abc")); // 96354
final int[] array1 = {1, 2, 3};
final int[] array2 = {1, 2, 3};
final int[] array3 = {4, 5, 6};
System.out.println(Objects.hashCode(array1)); // 1129405362
System.out.println(Objects.hashCode(array2)); // 556034497
System.out.println(Objects.hashCode(array3)); // 606135032
System.out.println(Arrays.hashCode(array1)); // 30817
System.out.println(Arrays.hashCode(array2)); // 30817
static boolean isNull (Object obj)
System.out.println(Objects.isNull(null)); // true
System.out.println(Objects.isNull(123)); // false
System.out.println(Objects.isNull("abc")); // false
final var list = new ArrayList<String>();
list.add("a");
list.add(null);
list.add("b");
list.add(null);
list.add("c");
System.out.println(list); // [a, null, b, null, c]
final var result = list.stream().filter(Objects::isNull).toList();
System.out.println(result); // [null, null]
static boolean nonNull (Object obj)
System.out.println(Objects.nonNull(null)); // false
System.out.println(Objects.nonNull(123)); // true
System.out.println(Objects.nonNull("abc")); // true
final var list = new ArrayList<String>();
list.add("a");
list.add(null);
list.add("b");
list.add(null);
list.add("c");
System.out.println(list); // [a, null, b, null, c]
final var result = list.stream().filter(Objects::nonNull).toList();
System.out.println(result); // [a, b, c]
static <T> T requireNonNull (T obj)
class Book {
private final String title;
private final String content;
Book(String title, String content) {
this.title = Objects.requireNonNull(title);
this.content = Objects.requireNonNull(content);
}
@Override
public String toString() {
return "title : " + title + ", content : " + content;
}
}
//new Book(null, "abcd"); // NullPointerException
//new Book("XYZ", null); // NullPointerException
final var book = new Book("XYZ", "abcd");
System.out.println(book); // title : XYZ, content : abcd
static <T> T requireNonNull (T obj, String message)
class Book {
private final String title;
private final String content;
Book(String title, String content) {
this.title = Objects.requireNonNull(title, "title must not be null");
this.content = Objects.requireNonNull(content, "content must not be null");
}
@Override
public String toString() {
return "title : " + title + ", content : " + content;
}
}
//new Book(null, "abcd"); // NullPointerException: title must not be null
//new Book("XYZ", null); // NullPointerException: content must not be null
final var book = new Book("XYZ", "abcd");
System.out.println(book); // title : XYZ, content : abcd
static <T> T requireNonNull (T obj, Supplier<String> messageSupplier)
class Book {
private final String title;
private final String content;
Book(String title, String content) {
this.title = Objects.requireNonNull(title, () -> "title must not be null");
this.content = Objects.requireNonNull(content, () -> "content must not be null");
}
@Override
public String toString() {
return "title : " + title + ", content : " + content;
}
}
//new Book(null, "abcd"); // NullPointerException: title must not be null
//new Book("XYZ", null); // NullPointerException: content must not be null
final var book = new Book("XYZ", "abcd");
System.out.println(book); // title : XYZ, content : abcd
static <T> T requireNonNullElse (T obj, T defaultObj)
class Book {
private final String title;
private final String content;
Book(String title, String content) {
this.title = Objects.requireNonNullElse(title, "default title");
this.content = Objects.requireNonNullElse(content, "default content");
}
@Override
public String toString() {
return "title : " + title + ", content : " + content;
}
}
final var book1 = new Book(null, "abcd");
System.out.println(book1); // title : default title, content : abcd
final var book2 = new Book("XYZ", null);
System.out.println(book2); // title : XYZ, content : default content
final var book3 = new Book("XYZ", "abcd");
System.out.println(book3); // title : XYZ, content : abcd
static <T> T requireNonNullElseGet (T obj, Supplier<? extends T> supplier)
class Book {
private final String title;
private final String content;
Book(String title, String content) {
this.title = Objects.requireNonNullElseGet(title, () -> "default title");
this.content = Objects.requireNonNullElseGet(content, () -> "default content");
}
@Override
public String toString() {
return "title : " + title + ", content : " + content;
}
}
final var book1 = new Book(null, "abcd");
System.out.println(book1); // title : default title, content : abcd
final var book2 = new Book("XYZ", null);
System.out.println(book2); // title : XYZ, content : default content
final var book3 = new Book("XYZ", "abcd");
System.out.println(book3); // title : XYZ, content : abcd
static String toString (Object o)
final var str1 = Objects.toString(null);
System.out.println(str1); // "null"
final var str2 = Objects.toString(123);
System.out.println(str2); // "123"
final var str3 = Objects.toString("abcd");
System.out.println(str3); // "abcd"
static String toString (Object o, String nullDefault)
final var str1 = Objects.toString(null, "XYZ");
System.out.println(str1); // "XYZ"
final var str2 = Objects.toString(123, "XYZ");
System.out.println(str2); // "123"
final var str3 = Objects.toString("abcd", "XYZ");
System.out.println(str3); // "abcd"