Java-standaardparameters die methode overbelasting gebruiken

1. Overzicht

In deze korte tutorial demonstreren we het gebruik van methode-overbelasting om standaardparameters in Java te simuleren.

Hier zeggen we simuleren omdat in tegenstelling tot bepaalde andere OOP-talen (zoals C ++ en Scala), de Java-specificatie ondersteunt het toewijzen van een standaardwaarde aan een methodeparameter niet.

2. Voorbeeld

Laten we als voorbeeld thee zetten! Ten eerste hebben we een Thee POJO:

openbare klasse Tea {statische laatste int DEFAULT_TEA_POWDER = 1; private String naam; private int melk; particuliere booleaanse kruiden; private int suiker; privé int teaPowder; // standaard getters} 

Hier de naam is een verplicht veld, zoals onze Thee moet tenminste een naam hebben.

Dan kan er geen thee zijn zonder theepoeder. We gaan er dus van uit dat de gebruiker een standaard 1 eetlepel wil theePoeder in hun thee, als deze niet wordt verstrekt op het moment van aanroeping. Dit is dan onze eerste standaardparameter.

De andere optionele parameters zijn melk (in ml), kruiden (om toe te voegen of niet toe te voegen), en suiker (in eetlepels). Als een van hun waarden niet wordt opgegeven, gaan we ervan uit dat de gebruiker ze niet wil.

Laten we eens kijken hoe we dit in Java kunnen bereiken met behulp van overbelasting van de methode:

public Tea (String naam, int melk, booleaanse kruiden, int suiker, int teaPowder) {this.name = name; this.milk = melk; this.herbs = kruiden; this.suar = suiker; this.teaPowder = teaPowder; } public Tea (String naam, int melk, booleaanse kruiden, int suiker) {this (naam, melk, kruiden, suiker, DEFAULT_TEA_POWDER); } public Tea (String naam, int melk, booleaanse kruiden) {this (naam, melk, kruiden, 0); } public Tea (String name, int milk) {this (name, milk, false); } public Tea (String name) {this (name, 0); }

Zoals duidelijk is, gebruiken we hier constructorketting, een vorm van overbelasting om de methodeparameters van enkele standaardwaarden te voorzien.

Laten we nu een eenvoudige test toevoegen om dit in actie te zien:

@Test openbare leegte whenTeaWithOnlyName_thenCreateDefaultTea () {Tea blackTea = nieuwe thee ("Zwarte thee"); assertThat (blackTea.getName ()). isEqualTo ("Zwarte thee"); assertThat (blackTea.getMilk ()). isEqualTo (0); assertThat (blackTea.isHerbs ()). isFalse (); assertThat (blackTea.getSugar ()). isEqualTo (0); assertThat (blackTea.getTeaPowder ()). isEqualTo (Tea.DEFAULT_TEA_POWDER); }

3. Alternatieven

Er zijn andere manieren om standaardparametersimulatie in Java te bereiken. Sommige ervan zijn:

  • met behulp van het Builder-patroon
  • met behulp van Optioneel
  • Nullen toestaan ​​als methode-argumenten

Hier is hoe we gebruik kunnen maken van de derde manier om null-argumenten toe te staan ​​in ons voorbeeld:

public Tea (String naam, Integer melk, Booleaanse kruiden, Integer suiker, Integer teaPowder) {this.name = name; this.milk = melk == null? 0: milk.intValue (); this.herbs = kruiden == null? false: kruiden.booleanValue (); this.sugar = sugar == null? 0: suiker.intValue (); this.teaPowder = teaPowder == null? DEFAULT_TEA_POWDER: teaPowder.intValue (); }

4. Conclusie

In dit artikel hebben we gekeken naar het gebruik van overbelasting van methoden om standaardparameters in Java te simuleren.

Hoewel er andere manieren zijn om hetzelfde te bereiken, is overbelasting zeer schoon en eenvoudig. Zoals altijd is code beschikbaar op GitHub.