Java-standardparametere ved bruk av metodeoverbelastning

1. Oversikt

I denne korte opplæringen vil vi demonstrere bruken av metodeoverbelastning for å simulere standardparametere i Java.

Her sier vi simulere fordi i motsetning til visse andre OOP-språk (som C ++ og Scala), Java-spesifikasjonen støtter ikke tildeling av en standardverdi til en metodeparameter.

2. Eksempel

Som et eksempel, la oss lage te! Først trenger vi en Te POJO:

offentlig klasse te {statisk slutt int DEFAULT_TEA_POWDER = 1; privat strengnavn; privat int melk; private boolske urter; privat int sukker; privat int tePulver; // standard getters} 

Her, den Navn er et obligatorisk felt, som vårt Te må ha et navn i det minste.

Da kan det ikke være te uten tepulver. Så vi antar at brukeren vil ha en standard 1 ss tePulver i te, hvis den ikke blir gitt ved påkallingstid. Dette er da vår første standardparameter.

De andre valgfrie parametrene er melk (i ml), urter (å legge til eller ikke legge til), og sukker (i ss). Hvis noen av deres verdier ikke er gitt, antar vi at brukeren ikke vil ha dem.

La oss se hvordan du oppnår dette i Java ved hjelp av metodeoverbelastning:

offentlig te (strengnavn, int melk, boolske urter, int sukker, int tePulver) {this.name = navn; dette. melk = melk; dette. urter = urter; dette. sukker = sukker; this.teaPowder = teaPowder; } offentlig te (strengnavn, int melk, boolske urter, int sukker) {dette (navn, melk, urter, sukker, DEFAULT_TEA_POWDER); } offentlig te (strengnavn, int melk, boolske urter) {dette (navn, melk, urter, 0); } public Tea (String name, int milk) {this (name, milk, false); } offentlig te (strengnavn) {dette (navn, 0); }

Som det er tydelig bruker vi her konstruktorkjetting, en form for overbelastning for å gi metodeparametrene noen standardverdier.

La oss nå legge til en enkel test for å se dette i aksjon:

@Test offentlig ugyldig nårTeaWithOnlyName_thenCreateDefaultTea () {Tea blackTea = ny te ("Svart te"); assertThat (blackTea.getName ()). isEqualTo ("Black Tea"); assertThat (blackTea.getMilk ()). er EqualTo (0); assertThat (blackTea.isHerbs ()). isFalse (); assertThat (blackTea.getSugar ()). erEqualTo (0); assertThat (blackTea.getTeaPowder ()). er EqualTo (Tea.DEFAULT_TEA_POWDER); }

3. Alternativer

Det er andre måter å oppnå standardparametersimulering i Java. Noen av dem er:

  • ved hjelp av Builder-mønster
  • bruker Valgfritt
  • Tillater null som metodeargumenter

Slik kan vi bruke den tredje måten å tillate nullargumenter i vårt eksempel:

public Tea (String name, Integer milk, Boolean urter, Integer sugar, Integer teaPowder) {this.name = name; this.milk = melk == null? 0: milk.intValue (); this.herbs = urter == null? false: herb.booleanValue (); this.sugar = sukker == null? 0: sugar.intValue (); this.teaPowder = teaPowder == null? DEFAULT_TEA_POWDER: teaPowder.intValue (); }

4. Konklusjon

I denne artikkelen så vi på å bruke metodeoverbelastning for å simulere standardparametere i Java.

Selv om det er andre måter å oppnå det samme på, er overbelastning mest ren og enkel. Som alltid er kode tilgjengelig på GitHub.


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