Predvolené parametre Java pomocou preťaženia metód

1. Prehľad

V tomto krátkom tutoriáli si ukážeme použitie preťaženia metód na simuláciu predvolených parametrov v Jave.

Tu hovoríme simulovať, pretože na rozdiel od niektorých iných jazykov OOP (ako C ++ a Scala), špecifikácia Java nepodporuje priradenie predvolenej hodnoty k parametru metódy.

2. Príklad

Ako príklad si pripravíme čaj! Najprv budeme potrebovať Čaj POJO:

verejná trieda Čaj {static final int DEFAULT_TEA_POWDER = 1; súkromné ​​meno reťazca; súkromné ​​int mlieko; súkromné ​​booleovské bylinky; súkromný int cukor; súkromný int čajPrášok; // štandardní príjemcovia} 

Tu je názov je povinné pole, ako je naše Čaj musí mať aspoň meno.

Potom nemôže byť žiadny čaj bez čajového prášku. Budeme teda predpokladať, že používateľ chce štandardnú 1 polievkovú lyžičku čajový prášok v čaji, ak to nie je poskytnuté v čase vyvolania. Toto je náš prvý predvolený parameter.

Ostatné voliteľné parametre sú mlieko (v ml), bylinky (pridať alebo nepridať) a cukor (v lyžici). Ak niektorá z ich hodnôt nie je uvedená, predpokladáme, že ich užívateľ nechce.

Pozrime sa, ako to dosiahnuť v Jave pomocou preťaženia metód:

public Tea (Názov reťazca, int mlieko, boolovské byliny, int cukor, int teaPowder) {this.name = meno; this.milk = mlieko; this.herbs = byliny; this.sugar = cukor; this.teaPowder = teaPowder; } verejný čaj (názov reťazca, int mlieko, boolovské byliny, int cukor) {this (name, mlieko, bylinky, cukor, DEFAULT_TEA_POWDER); } verejný čaj (názov reťazca, int mlieko, boolovské byliny) {toto (názov, mlieko, bylinky, 0); } public Tea (Názov reťazca, int mlieko) {this (name, milk, false); } public Tea (Názov reťazca) {this (name, 0); }

Ako je zrejmé, tu používame reťazenie konštruktorov, formu preťaženia, aby sme parametrom metódy poskytli niektoré predvolené hodnoty.

Teraz pridajme jednoduchý test, aby sme to videli v akcii:

@Test public void whenTeaWithOnlyName_thenCreateDefaultTea () {Tea blackTea = nový čaj ("čierny čaj"); assertThat (blackTea.getName ()). isEqualTo ("čierny čaj"); assertThat (blackTea.getMilk ()). isEqualTo (0); assertThat (blackTea.isHerbs ()). isFalse (); assertThat (blackTea.getSugar ()). isEqualTo (0); assertThat (blackTea.getTeaPowder ()). isEqualTo (Tea.DEFAULT_TEA_POWDER); }

3. Alternatívy

Existujú ďalšie spôsoby, ako dosiahnuť predvolenú simuláciu parametrov v Jave. Niektoré z nich sú:

  • pomocou vzoru Builder
  • pomocou Voliteľné
  • Povolenie núl ako argumentov metódy

Tu je príklad, ako môžeme v našom príklade využiť tretí spôsob povolenia nulových argumentov:

verejný čaj (názov reťazca, celočíselné mlieko, boolovské byliny, celočíselný cukor, celočíselný čajový prášok) {this.name = meno; this.milk = mlieko == null? 0: milk.intValue (); this.herbs = byliny == null? false: byliny.booleanValue (); this.sugar = sugar == null? 0: sugar.intValue (); this.teaPowder = teaPowder == null? DEFAULT_TEA_POWDER: teaPowder.intValue (); }

4. Záver

V tomto článku sme sa zamerali na použitie preťaženia metód na simuláciu predvolených parametrov v Jave.

Aj keď existujú iné spôsoby, ako to dosiahnuť, preťaženie je najčistejšie a najjednoduchšie. Ako vždy, kód je k dispozícii na GitHub.


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