Java 9 java.util.Objects-tillegg

1. Introduksjon

Java.util.Objects klasse har vært en del av Java siden versjon 1.7. Denne klassen gir statiske verktøymetoder for objekter som kan brukes til å utføre noen av de daglige oppgavene, som å sjekke om likestilling, null sjekker osv.

I denne artikkelen vil vi se på de nye metodene introdusert i java.util.Objects klasse i Java 9.

2. Den requireNonNullElse Metode

Denne metoden godtar to parametere og returnerer den første parameteren hvis den ikke er det null, den andre parameteren ellers. Hvis begge parametrene er null, kaster det NullPointerException:

privat liste aMethodReturningNullList () {return null; } @Test offentlig ugyldig givenNullObject_whenRequireNonNullElse_thenElse () {List aList = Objects.requireNonNullElse (aMethodReturningNullList (), Collections.EMPTY_LIST); assertThat (aList, is (Collections.EMPTY_LIST)); } privat liste aMethodReturningNonNullList () {return List.of ("item1", "item2"); } @Test offentlig ugyldig givenObject_whenRequireNonNullElse_thenObject () {List aList = Objects.requireNonNullElse (aMethodReturningNonNullList (), Collections.EMPTY_LIST); assertThat (aList, er (List.of ("item1", "item2"))); } @Test (forventet = NullPointerException.class) offentlig tomrom gittNull_whenRequireNonNullElse_thenException () {Objects.requireNonNullElse (null, null); }

3. Bruke requireNonNullElseGet

Denne metoden ligner på requireNonNullElse, bortsett fra det den andre parameteren er a java.util.function.Leverandør grensesnitt som tillater en lat instantiering av den medfølgende samlingen. De Leverandør implementering er ansvarlig for å returnere et objekt som ikke er null, som vist nedenfor:

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

4. Bruke checkIndex

Denne metoden brukes til å kontrollere om indeksen er innenfor den angitte lengden. Den returnerer indeksen hvis 0 <= indeks <lengde. Ellers kaster det en IndexOutOfBoundsException som vist under:

@Test offentlig ugyldighet givenNumber_whenInvokeCheckIndex_thenNumber () {int length = 5; assertThat (Objects.checkIndex (4, lengde), er (4)); } @Test (forventet = IndexOutOfBoundsException.class) offentlig ugyldig gittOutOfRangeNumber_whenInvokeCheckIndex_thenException () {int lengde = 5; Objects.checkIndex (5, lengde); }

5. Bruke checkFromToIndex

Denne metoden brukes til å kontrollere om det gitte underområdet dannes av [fromIndex, toIndex) er innenfor området dannet av [0, lengde). Hvis underområdet er gyldig, returnerer det nedre grense som vist nedenfor:

@Test offentlig ugyldighet givenSubRange_whenCheckFromToIndex_thenNumber () {int length = 6; assertThat (Objects.checkFromToIndex (2, lengde, lengde), er (2)); } @Test (forventet = IndexOutOfBoundsException.class) offentlig tomrom gittInvalidSubRange_whenCheckFromToIndex_thenException () {int lengde = 6; Objects.checkFromToIndex (2,7, lengde); }

Merk: I matematikk indikerer et område representert i form av [a, b) at området inkluderer a og eksklusivt for b. [og] oppgi at tallet er inkludert og (og) oppgi at antallet er ekskludert.

6. Bruke checkFromIndexSize

Denne metoden ligner på checkFromToIndex bortsett fra at i stedet for å gi den øvre grensen til underområdet, gir vi størrelsen og den nedre grensen for underområdet.

Underområdet er i dette tilfellet [fromIndex, fromIndex + størrelse) og denne metoden sjekker at underområdet er innenfor området dannet av [0, lengde):

@Test offentlig ugyldighet givenSubRange_whenCheckFromIndexSize_thenNumber () {int length = 6; assertThat (Objects.checkFromIndexSize (2,3, lengde), er (2)); } @Test (forventet = IndexOutOfBoundsException.class) offentlig ugyldig givenInvalidSubRange_whenCheckFromIndexSize_thenException () {int lengde = 6; Objects.checkFromIndexSize (2, 6, lengde); }

7. Konklusjon

De java.util.Objects klasse i JDK 9 dekker få nye verktøymetoder. Det er også oppmuntrende fordi denne tjenesteklassen har blitt oppdatert jevnlig siden den ble introdusert i Java 7.

Koden for denne artikkelen finner du på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found