Java 9 java.util.Objects Additions

1. Въведение

Класът java.util.Objects е част от Java от версия 1.7. Този клас предоставя статични полезни методи за обекти, които могат да се използват за изпълнение на някои ежедневни задачи като проверка за равенство, нулеви проверки и т.н.

В тази статия ще разгледаме новите методи, въведени в класа java.util.Objects в Java 9.

2. requireNonNullElse Метод

Този метод приема два параметъра и връща първия параметър, ако не е нула , а вторият параметър в противен случай. Ако и двата параметъра са нула , той изхвърля NullPointerException :

private List aMethodReturningNullList(){ return null; } @Test public void givenNullObject_whenRequireNonNullElse_thenElse() { List aList = Objects.requireNonNullElse( aMethodReturningNullList(), Collections.EMPTY_LIST); assertThat(aList, is(Collections.EMPTY_LIST)); } private List aMethodReturningNonNullList() { return List.of("item1", "item2"); } @Test public void givenObject_whenRequireNonNullElse_thenObject() { List aList = Objects.requireNonNullElse( aMethodReturningNonNullList(), Collections.EMPTY_LIST); assertThat(aList, is(List.of("item1", "item2"))); } @Test(expected = NullPointerException.class) public void givenNull_whenRequireNonNullElse_thenException() { Objects.requireNonNullElse(null, null); }

3. Използване на requireNonNullElseGet

Този метод е подобен на requireNonNullElse , с изключение на това, че вторият параметър е java.util.function.Supplier интерфейс, който позволява мързелива инстанция на предоставената колекция. Най- доставчик изпълнението е отговорен за връщане, която не е нулев обект, както е показано по-долу:

@Test public void givenObject_whenRequireNonNullElseGet_thenObject() { List aList = Objects.requireNonNullElseGet( null, List::of); assertThat(aList, is(List.of())); }

4. Използване на checkIndex

Този метод се използва за проверка дали индексът е в рамките на дадената дължина. Той връща индекса, ако 0 <= индекс <дължина . В противен случай той хвърля IndexOutOfBoundsException, както е показано по-долу:

@Test public void givenNumber_whenInvokeCheckIndex_thenNumber() { int length = 5; assertThat(Objects.checkIndex(4, length), is(4)); } @Test(expected = IndexOutOfBoundsException.class) public void givenOutOfRangeNumber_whenInvokeCheckIndex_thenException() { int length = 5; Objects.checkIndex(5, length); }

5. Използване на checkFromToIndex

Този метод се използва за проверка дали даденият поддиапазон, образуван от [fromIndex, toIndex), е в рамките на обхвата, образуван от [0, length) . Ако поддиапазонът е валиден, той връща долната граница, както е показано по-долу:

@Test public void givenSubRange_whenCheckFromToIndex_thenNumber() { int length = 6; assertThat(Objects.checkFromToIndex(2,length,length), is(2)); } @Test(expected = IndexOutOfBoundsException.class) public void givenInvalidSubRange_whenCheckFromToIndex_thenException() { int length = 6; Objects.checkFromToIndex(2,7,length); }

Забележка: В математиката диапазон, представен под формата на [a, b), показва, че диапазонът включва a и изключва b. [и] посочете, че номерът е включен и (и) посочете, че номерът е изключен.

6. Използване на checkFromIndexSize

Този метод е подобен на checkFromToIndex с изключение на това, че вместо да предоставим горната граница на поддиапазона, ние предоставяме размера и долната граница на поддиапазона.

В този случай поддиапазонът е [fromIndex, fromIndex + size) и този метод проверява дали поддиапазонът е в диапазона, образуван от [0, дължина) :

@Test public void givenSubRange_whenCheckFromIndexSize_thenNumber() { int length = 6; assertThat(Objects.checkFromIndexSize(2,3,length), is(2)); } @Test(expected = IndexOutOfBoundsException.class) public void givenInvalidSubRange_whenCheckFromIndexSize_thenException() { int length = 6; Objects.checkFromIndexSize(2, 6, length); }

7. Заключение

Класът java.util.Objects в JDK 9 обхваща няколко нови метода на помощната програма. Обнадеждаващо е и защото този клас услуги се актуализира редовно от времето, когато е въведен в Java 7.

Кодът за тази статия може да бъде намерен в GitHub.