Java-standardparametre ved brug af metodeoverbelastning

1. Oversigt

I denne korte vejledning demonstrerer vi brugen af ​​metodeoverbelastning til at simulere standardparametre i Java.

Her siger vi simulere, fordi i modsætning til visse andre OOP-sprog (som C ++ og Scala), Java-specifikationen understøtter ikke tildeling af en standardværdi til en metodeparameter.

2. Eksempel

Lad os som et eksempel lave lidt te! Først skal vi bruge en Te POJO:

offentlig klasse te {static final int DEFAULT_TEA_POWDER = 1; privat strengnavn; privat int mælk; private boolske urter; privat int sukker; privat int tePulver; // standard getters} 

Her, den navn er et obligatorisk felt, som vores Te skal i det mindste have et navn.

Derefter kan der ikke være nogen te uden tepulver. Så vi antager, at brugeren ønsker en standard 1 spsk tePulver i deres te, hvis den ikke leveres på indkaldelsestidspunktet. Dette er så vores første standardparameter.

De andre valgfri parametre er mælk (i ml), urter (at tilføje eller ikke tilføje), og sukker (i spsk). Hvis nogen af ​​deres værdier ikke er angivet, antager vi, at brugeren ikke vil have dem.

Lad os se, hvordan man opnår dette i Java ved hjælp af metodeoverbelastning:

offentlig te (strengnavn, int mælk, boolske urter, int sukker, int tePulver) {dette.navn = navn; dette. mælk = mælk; this.herbs = urter; dette. sukker = sukker; this.teaPowder = teaPowder; } offentlig te (strengnavn, int mælk, boolske urter, int sukker) {dette (navn, mælk, urter, sukker, DEFAULT_TEA_POWDER); } offentlig te (strengnavn, int mælk, boolske urter) {dette (navn, mælk, urter, 0); } offentlig te (strengnavn, int mælk) {dette (navn, mælk, falsk); } offentlig te (strengnavn) {dette (navn, 0); }

Som det er tydeligt, bruger vi her konstruktorkæde, en form for overbelastning for at give metodeparametrene nogle standardværdier.

Lad os nu tilføje en simpel test for at se dette i aktion:

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

3. Alternativer

Der er andre måder at opnå standardparametersimulering på Java. Nogle af dem er:

  • ved hjælp af Builder-mønster
  • ved hjælp af Valgfri
  • Tillader nuller som metodeargumenter

Sådan kan vi bruge den tredje måde at tillade nullargumenter på i vores eksempel:

offentlig te (strengnavn, helmælk, boolske urter, helhedssukker, heltal teepulver) {dette.navn = navn; this.milk = mælk == 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. Konklusion

I denne artikel så vi på brug af metodeoverbelastning til at simulere standardparametre i Java.

Mens der er andre måder at opnå det samme, er overbelastning mest ren og enkel. Som altid er kode tilgængelig på GitHub.


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