Java 9 java.util.Objects-tilføjelser

1. Introduktion

Java.util.Objects klasse har været en del af Java siden version 1.7. Denne klasse giver statiske hjælpemetoder til objekter, der kan bruges til at udføre nogle af de daglige opgaver som at kontrollere for lighed, nul kontrol osv.

I denne artikel vil vi se på de nye metoder introduceret i java.util.Objects klasse i Java 9.

2. Den requireNonNullElse Metode

Denne metode accepterer to parametre og returnerer den første parameter, hvis den ikke er nul, den anden parameter ellers. Hvis begge parametre er nul, det kaster NullPointerException:

privat liste aMethodReturningNullList () {return null; } @Test offentlig ugyldighed givenNullObject_whenRequireNonNullElse_thenElse () {List aList = Objects.requireNonNullElse (aMethodReturningNullList (), Collections.EMPTY_LIST); assertThat (aList, er (Collections.EMPTY_LIST)); } privat liste aMethodReturningNonNullList () {return List.of ("item1", "item2"); } @Test offentligt ugyldigt givetObject_whenRequireNonNullElse_thenObject () {List aList = Objects.requireNonNullElse (aMethodReturningNonNullList (), Collections.EMPTY_LIST); assertThat (aList, er (List.of ("item1", "item2"))); } @Test (forventet = NullPointerException.class) offentlig ugyldighed givenNull_whenRequireNonNullElse_thenException () {Objects.requireNonNullElse (null, null); }

3. Brug requireNonNullElseGet

Denne metode svarer til requireNonNullElse, bortset fra det den anden parameter er en java.util.function.Supplier interface, der tillader en doven instantiering af den medfølgende samling. Det Leverandør implementering er ansvarlig for at returnere et ikke-nul objekt som vist nedenfor:

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

4. Brug checkIndex

Denne metode bruges til at kontrollere, om indekset er inden for den givne længde. Det returnerer indekset hvis 0 <= indeks <længde. Ellers kaster det en IndexOutOfBoundsException som vist nedenfor:

@Test offentlig ugyldighed givenNumber_whenInvokeCheckIndex_thenNumber () {int længde = 5; assertThat (Objects.checkIndex (4, længde), er (4)); } @Test (forventet = IndexOutOfBoundsException.class) offentlig ugyldigt givenOutOfRangeNumber_whenInvokeCheckIndex_thenException () {int længde = 5; Objects.checkIndex (5, længde); }

5. Brug checkFromToIndex

Denne metode bruges til at kontrollere, om det givne underområde dannet af [fromIndex, toIndex) er inden for området dannet af [0, længde). Hvis underområdet er gyldigt, returnerer det den nedre grænse som vist nedenfor:

@Test offentlig ugyldighed givenSubRange_whenCheckFromToIndex_thenNumber () {int længde = 6; assertThat (Objects.checkFromToIndex (2, længde, længde), er (2)); } @Test (forventet = IndexOutOfBoundsException.class) offentlig ugyldighed givenInvalidSubRange_whenCheckFromToIndex_thenException () {int længde = 6; Objects.checkFromToIndex (2,7, længde); }

Bemærk: I matematik angiver et område repræsenteret i form af [a, b) området er inklusive a og eksklusivt for b. [og] angiv, at antallet er inkluderet, og (og) angiv, at antallet er ekskluderet.

6. Brug checkFromIndexSize

Denne metode svarer til checkFromToIndex bortset fra at i stedet for at give den øvre grænse for underområdet giver vi størrelsen og den nedre grænse for underområdet.

Underområdet er i dette tilfælde [fromIndex, fromIndex + størrelse) og denne metode kontrollerer, at underområdet er inden for det interval, der dannes af [0, længde):

@Test offentlig ugyldighed givenSubRange_whenCheckFromIndexSize_thenNumber () {int længde = 6; assertThat (Objects.checkFromIndexSize (2,3, længde), er (2)); } @Test (forventet = IndexOutOfBoundsException.class) offentlig ugyldighed givenInvalidSubRange_whenCheckFromIndexSize_thenException () {int længde = 6; Objects.checkFromIndexSize (2, 6, længde); }

7. Konklusion

Det java.util.Objects klasse i JDK 9 dækker få nye hjælpemetoder. Det er også opmuntrende, fordi denne serviceklasse er opdateret regelmæssigt siden det tidspunkt, det blev introduceret i Java 7.

Koden til denne artikel kan findes på GitHub.


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