Java 9 java.util.Objects Toevoegingen

1. Inleiding

Het bestand java.util.Objects class maakt sinds versie 1.7 deel uit van Java. Deze klasse biedt statische hulpprogramma's voor objecten die kunnen worden gebruikt om enkele van de alledaagse taken uit te voeren, zoals het controleren op gelijkheid, nul cheques, etc.

In dit artikel zullen we kijken naar de nieuwe methoden die zijn geïntroduceerd in het java.util.Objects klasse in Java 9.

2. Het vereisenNonNullElse Methode

Deze methode accepteert twee parameters en retourneert de eerste parameter als dit niet het geval is nul, anders de tweede parameter. Als beide parameters nul, het gooit NullPointerException:

privélijst aMethodReturningNullList () {return null; } @Test openbare void givenNullObject_whenRequireNonNullElse_thenElse () {List aList = Objects.requireNonNullElse (aMethodReturningNullList (), Collections.EMPTY_LIST); assertThat (aList, is (Collections.EMPTY_LIST)); } privélijst aMethodReturningNonNullList () {return List.of ("item1", "item2"); } @Test openbare leegte gegevenObject_whenRequireNonNullElse_thenObject () {Lijst aList = Objects.requireNonNullElse (aMethodReturningNonNullList (), Collections.EMPTY_LIST); assertThat (aList, is (List.of ("item1", "item2"))); } @Test (verwacht = NullPointerException.class) openbare ongeldige gegevenNull_whenRequireNonNullElse_thenException () {Objects.requireNonNullElse (null, null); }

3. Met behulp van vereisenNonNullElseGet

Deze methode is vergelijkbaar met vereisenNonNullElse, behalve dat de tweede parameter is een java.util.function.Supplier interface die een luie instantiatie van de verstrekte verzameling mogelijk maakt. De Leverancier implementatie is verantwoordelijk voor het retourneren van een niet-null-object zoals hieronder weergegeven:

@Test openbare ongeldig gegevenObject_whenRequireNonNullElseGet_thenObject () {List aList = Objects.requireNonNullElseGet (null, List :: of); assertThat (aList, is (List.of ())); }

4. Met behulp van checkIndex

Deze methode wordt gebruikt om te controleren of de index binnen de opgegeven lengte valt. Het retourneert de index if 0 <= index <lengte. Anders gooit het een IndexOutOfBoundsException zoals hieronder weergegeven:

@Test openbare leegte gegevenNumber_whenInvokeCheckIndex_thenNumber () {int lengte = 5; assertThat (Objects.checkIndex (4, lengte), is (4)); } @Test (verwacht = IndexOutOfBoundsException.class) openbare ongeldige gegevenOutOfRangeNumber_whenInvokeCheckIndex_thenException () {int lengte = 5; Objects.checkIndex (5, lengte); }

5. Met behulp van checkFromToIndex

Deze methode wordt gebruikt om te controleren of het gegeven subbereik wordt gevormd door [fromIndex, toIndex) valt binnen het bereik gevormd door [0, lengte). Als het subbereik geldig is, retourneert het de ondergrens zoals hieronder weergegeven:

@Test openbare leegte gegevenSubRange_whenCheckFromToIndex_thenNumber () {int lengte = 6; assertThat (Objects.checkFromToIndex (2, lengte, lengte), is (2)); } @Test (verwacht = IndexOutOfBoundsException.class) openbare ongeldige gegevenInvalidSubRange_whenCheckFromToIndex_thenException () {int lengte = 6; Objects.checkFromToIndex (2,7; lengte); }

Opmerking: in de wiskunde geeft een bereik weergegeven in de vorm van [a, b) aan dat het bereik inclusief a en exclusief b is. [en] stellen dat het nummer is opgenomen en (en) stellen dat het nummer is uitgesloten.

6. Met behulp van checkFromIndexSize

Deze methode is vergelijkbaar met checkFromToIndex behalve dat in plaats van de bovengrens van het subbereik te geven, we de grootte en de ondergrens van het subbereik opgeven.

Het subbereik is in dit geval [fromIndex, fromIndex + grootte) en deze methode controleert of het subbereik binnen het bereik valt dat wordt gevormd door [0, lengte):

@Test openbare leegte gegevenSubRange_whenCheckFromIndexSize_thenNumber () {int lengte = 6; assertThat (Objects.checkFromIndexSize (2,3, lengte), is (2)); } @Test (verwacht = IndexOutOfBoundsException.class) openbare ongeldige gegevenInvalidSubRange_whenCheckFromIndexSize_thenException () {int lengte = 6; Objects.checkFromIndexSize (2, 6, lengte); }

7. Conclusie

De java.util.Objects klasse in JDK 9 behandelt enkele nieuwe hulpprogramma-methoden. Het is ook bemoedigend omdat deze serviceklasse regelmatig is bijgewerkt sinds de introductie in Java 7.

De code voor dit artikel is te vinden op GitHub.