Въведение в класа ObjectUtils

Методи:

allNotNull(Обект...стойности) Проверява дали всички обекти не са нулеви
allNull(Обект...стойности) Проверява дали всички обекти са нулеви
anyNotNull(Обект...стойности) Проверява дали поне един обект не е нулев
anyNull(Обект... стойности) Проверява дали поне един обект е нула
клонинг (T obj) Клонира обект
cloneIfPossible(T obj) Клонира обект or връща оригинала
сравнение (T c1, T c2) Сравнява обекти
defaultIfNull(T обект, T defaultValue) Връща обекта по подразбиране, ако обектът е нула
равно (обект обект1, обект обект2) Сравнява два обекта
notEqual(Object object1, Object object2) Проверете дали два обекта не са еднакви
firstNonNull(T...стойности) Връща първия обект, който не е нула
getFirstNonNull(Доставчик ... доставчици) Връща първия обект, който не е нула
getIfNull(T обект, Доставчик доставчик по подразбиране) Връща дадения обект, ако не е null, в противен случай връща стойността Supplier.get() на предадения Supplier
hashCode(obj) Изчислява hashCode за обект
hashCodeMulti(Обект... обекти) Изчислява hashCode за група обекти
isEmpty (обект обект) Проверява дали даден обект е празен or нулев
isNotEmpty(обект обект) Проверява дали даден обект не е празен or нулев
requireNonEmpty(T obj) Проверява дали даден обект не е null, в противен случай хвърля изключение
requireNonEmpty(T obj, String message) Проверява дали даден обект не е null, в противен случай хвърля изключение
identityToString(обект обект) Връща низ за обект
toString(Object obj) Връща низ за обект
toString(Object obj, String nullStr) Връща низ за обект
toString(Object obj, Supplier доставчик) Връща низ за обект

Нека разгледаме по един метод от всяка група. Надявам се, че ще ги използвате често, защото са много удобни и ви позволяват да избегнете ненужния code.

ObjectUtils.compare()

Методът сравнява обекти по същия начин като comparator: по-голямо от, по-малко от or равно на. Може да се използва за сортиране на обекти.

Сигнатурата на метода изглежда така:

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 = "codeGym";
String secondValue = "codeGym";
System.out.print(ObjectUtils.compare(firstValue, secondValue));
System.out.println();

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

firstValue = "";
secondValue = "codeGym";
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("codeGym");
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(Objectobj) Проверява дали даден обект е нула
nonNull(Object obj) Проверява дали даден обект не е нула
toString(Objecto) Преобразува обект в низ
toString(Objecto, String nullDefault) Преобразува обект в низ
булево равно (обект a, обект b) Сравнява обекти
boolean deepEquals(Object a,Object b) Сравнява обекти
T requireNonNull(T obj) Проверява дали предаденият параметър не е нула
T requireNonNull(T obj,String message) Проверява дали предаденият параметър не е нула
int hashCode(Object o) Изчислява hashCode за обект
int хеш (обект...стойности) Изчислява hashCode за група обекти
int compare(T a,T b,Comparator c) Сравнява обекти

Тъй като класът java.util.Objects е част от JDK, се препоръчва да го използвате във вашия code.

Важно е да се отбележи, че когато четете codeа на някой друг, най-вероятно ще срещнете опции от ObjectUtils , това често се случва в отворен code. Тук можете да видите How се различават.