Знакомство с классом ObjectUtils

Методы:

allNotNull(Object... values) Проверяет, что все объекты не null
allNull(Object... values) Проверяет, что все объекты равны null
anyNotNull(Object... values) Проверяет, что хотя бы один объект не null
anyNull(Object... values) Проверяет, что хотя бы один объект null
clone(T obj) Клонирует объект
cloneIfPossible(T obj) Клонирует объект или возвращает оригинал
compare(T c1, T c2) Сравнивает объекты
defaultIfNull(T object, T defaultValue) Возвращает default-объект, если object равен null
equals(Object object1, Object object2) Сравнивает два объекта
notEqual(Object object1, Object object2) Проверят, что два объекта не равны
firstNonNull(T... values) Возвращает первый объект, который не null
getFirstNonNull(Supplier... suppliers) Возвращает первый объект, который не null
getIfNull(T object, Supplier defaultSupplier) Возвращает данный объект, если он не равен null, иначе возвращает значение Supplier.get() переданного Supplier
hashCode(Object obj) Вычисляет hashCode для объекта
hashCodeMulti(Object... objects) Вычисляет hashCode для группы объектов
isEmpty(Object object) Проверяет, что объект empty или null
isNotEmpty(Object object) Проверяет, что объект не empty или null
requireNonEmpty(T obj) Проверяет, что объект не null, иначе кидает исключение
requireNonEmpty(T obj, String message) Проверяет, что объект не null, иначе кидает исключение
identityToString(Object object) Возвращает строку для объекта
toString(Object obj) Возвращает строку для объекта
toString(Object obj, String nullStr) Возвращает строку для объекта
toString(Object obj, Supplier supplier) Возвращает строку для объекта

Давай рассмотрим по одному методу из каждой группы. Я надеюсь, ты будешь часто ими пользоваться, ведь они очень удобные и позволяют избегать лишнего кода.

ObjectUtils.compare()

Метод сравнивает объекты по такому же принципу, как и comparator: больше, меньше или равно. Его можно использовать для сортировки объектов.

Сигнатура метода имеет вид:


public static <T extends Comparable<? super T>> int compare(final T c1, final T c2);
public static <T extends Comparable<? super T>> int compare(final T c1, final T c2, final boolean nullGreater);

Если третий параметр (nullGreater) равен true, то null будет всегда считаться больше, чем не null. Метод возвращает позитивное значение, если c1> c2, негативное, если c1<c2, и 0, если c1 == c2.

Пример:


String firstValue = "javaRush";
String secondValue = "javaRush";
System.out.print(ObjectUtils.compare(firstValue, secondValue));
System.out.println();

firstValue = "javaRush";
secondValue = null;
System.out.print(ObjectUtils.compare(firstValue, secondValue));
System.out.println();

firstValue = "";
secondValue = "javaRush";
System.out.print(ObjectUtils.compare(firstValue, secondValue));
System.out.println();

Программа выведет на экран результат:

0
1
-8

ObjectUtils.isNotEmpty()

Метод isNotEmpty() проверяет, что переданный в него объект не пустой и не null.

Сигнатура метода:


public static boolean isNotEmpty(final Object object)

Пример:


List<String> values = new ArrayList<>();
System.out.println(ObjectUtils.isNotEmpty(values));

values.add("javaRush");
System.out.println(ObjectUtils.isNotEmpty(values));

values = null;
System.out.println(ObjectUtils.isNotEmpty(values));

На экран будет выведен результат:

false
true
false

java.util.Objects

Разработчикам Java очень понравилась идея с ObjectUtils, так что в JDK 7 они добавили свой вариант:

isNull(Object obj) Проверяет, что объект равен null
nonNull(Object obj) Проверяет, что объект не равен null
toString(Object o) Преобразовывает объект в строку
toString(Object o, String nullDefault) Преобразовывает объект в строку
boolean equals(Object a,Object b) Сравнивает объекты
boolean deepEquals(Object a,Object b) Сравнивает объекты
T requireNonNull(T obj) Проверяет, что переданный параметр не null
T requireNonNull(T obj,String message) Проверяет, что переданный параметр не null
int hashCode(Object o) Вычисляет hashCode для объекта
int hash(Object… values) Вычисляет hashCode для группы объектов
int compare(T a,T b,Comparator c) Сравнивает объекты

Так как класс java.util.Objects входит в состав JDK, рекомендуется использовать его в коде.

Важно заметить, что когда ты будешь читать чужой код, то скорее всего встретишь варианты из ObjectUtils, такое часто бывает в open-source. Тут ты можешь посмотреть, чем они отличаются.

undefined
1
Задача
Модуль 3. Java Professional, 20 уровень, 3 лекция
Недоступна
В поиске ботана
В местной школе появилась потребность в программе, которая сравнивает оценки двух разных студентов и выдаёт результат в виде строки...
undefined
1
Задача
Модуль 3. Java Professional, 20 уровень, 3 лекция
Недоступна
Шило на мыло
Твоя задача — изменить код методов printFirstNonNull, printDefaultValueIfNullObject и printIfAllNotNull класса Solution, чтобы в решении вместо методов класса ObjectUtils библиотеки apache commons использовались методы классов Objects и Strings...