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.