Рубрики
Без рубрики

Java 9 java.util.Дополнения объектов

Узнайте о новых служебных методах, введенных в java.util.Класс объектов в Java 9.

Автор оригинала: baeldung.

1. введение

Java.util.Класс Objects является частью Java с версии 1.7. Этот класс предоставляет статические служебные методы для объектов, которые могут быть использованы для выполнения некоторых повседневных задач, таких как проверка на равенство, null проверки и т. Д.

В этой статье мы рассмотрим новые методы, представленные в файле java.util.Объекты класс в Java 9.

2. Метод requirenonnull

Этот метод принимает два параметра и возвращает первый параметр , если он не является null , второй параметр в противном случае. Если оба параметра равны null , он вызывает 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. Использование requireNonNull Else Get

Этот метод аналогичен requireNonNull Else , за исключением того, что вторым параметром является 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. Использование check From To Index

Этот метод используется для проверки того, находится ли данный поддиапазон, образованный [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. Использование проверки размера fromIndex

Этот метод аналогичен check From To Index за исключением того, что вместо предоставления верхней границы поддиапазона мы предоставляем размер и нижнюю границу поддиапазона.

Поддиапазон в данном случае равен [fromIndex, fromIndex + size) и этот метод проверяет, что поддиапазон находится в пределах диапазона, образованного [0, length) :

@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 .