Java alapértelmezett paraméterek a módszer túlterhelésével

1. Áttekintés

Ebben a rövid bemutatóban bemutatjuk a módszer túlterhelésének használatát az alapértelmezett paraméterek szimulálására a Java-ban.

Itt azt mondjuk, hogy szimulálunk, mert más OOP nyelvektől eltérően (például a C ++ és a Scala), a Java specifikáció nem támogatja az alapértelmezett érték hozzárendelését a method paraméterhez.

2. Példa

Példaként főzzünk egy teát! Először szükségünk lesz egy Tea POJO:

nyilvános osztály Tea {static final int DEFAULT_TEA_POWDER = 1; privát karakterlánc neve; privát int tej; saját logikai gyógynövények; magán int cukor; privát int teaPor; // standard getters} 

Itt a név kötelező mező, mint a mi Tea legalább névvel kell rendelkeznie.

Akkor nem lehet tea teapor nélkül. Tehát feltételezzük, hogy a felhasználó normál 1 evőkanálot szeretne teaPor teájukban, ha a hívás idején nem biztosítják. Ez az első alapértelmezett paraméterünk.

A többi opcionális paraméter a tej (ml-ben), gyógynövények (hozzáadni vagy nem hozzáadni), és cukor (evőkanálban). Ha valamelyik értékük nincs megadva, akkor feltételezzük, hogy a felhasználó nem akarja őket.

Nézzük meg, hogyan lehet ezt elérni a Java-ban a módszer túlterhelésével:

public Tea (Húrnév, int tej, logikai gyógynövények, int cukor, int teaPor) {this.név = név; ez.tej = tej; ez.gyógynövények = gyógynövények; ez.cukor = cukor; ez.teaPow = teapor; } public Tea (húrnév, int tej, logikai gyógynövények, int cukor) {ez (név, tej, gyógynövények, cukor, DEFAULT_TEA_POWDER); } public Tea (Húr neve, int tej, logikai gyógynövények) {ez (név, tej, gyógynövények, 0); } public Tea (húrnév, int tej) {ez (név, tej, hamis); } public Tea (karakterlánc neve) {this (név, 0); }

Mint nyilvánvaló, itt a konstruktor láncolását használjuk, a túlterhelés egyik formáját, hogy a módszer paramétereit néhány alapértelmezett értékkel megadjuk.

Most adjunk hozzá egy egyszerű tesztet, hogy ezt működés közben lássuk:

@Test public void whenTeaWithOnlyName_thenCreateDefaultTea () {Tea blackTea = new Tea ("Fekete Tea"); assertThat (blackTea.getName ()). isEqualTo ("Fekete tea"); assertThat (blackTea.getMilk ()). isEqualTo (0); assertThat (blackTea.isHerbs ()). isFalse (); assertThat (blackTea.getSugar ()). isEqualTo (0); assertThat (blackTea.getTeaPowder ()). isEqualTo (Tea.DEFAULT_TEA_POWDER); }

3. Alternatívák

Az Java alapértelmezett paraméter-szimulációjának más módjai is elérhetők. Néhány közülük:

  • Builder mintával
  • opcionális használatával
  • A nullák engedélyezése metódus argumentumként

Így használhatjuk a nulla argumentum engedélyezésének harmadik módját a példánkban:

nyilvános tea (húr neve, egész tej, logikai gyógynövények, egész cukor, egész tea por) {this.név = név; ez.tej = tej == null? 0: milk.intValue (); ez.gyógynövények = gyógynövények == null? hamis: gyógynövények.booleanValue (); ez.cukor = cukor == null? 0: sugar.intValue (); this.teaPowder = teaPowder == null? DEFAULT_TEA_POWDER: teaPowder.intValue (); }

4. Következtetés

Ebben a cikkben a módszer túlterhelését vizsgáltuk az alapértelmezett paraméterek szimulálására a Java-ban.

Noha más módon is elérhetjük ugyanezt, a túlterhelés a legtisztább és legegyszerűbb. Mint mindig, a kód elérhető a GitHubon.


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