Zadani parametri Java pomoću preopterećenja metoda
1. Pregled
U ovom kratkom vodiču pokazat ćemo upotrebu preopterećenja metoda za simulaciju zadanih parametara u Javi.
Ovdje kažemo simulirati jer za razliku od nekih drugih OOP jezika (poput C ++ i Scala), Java specifikacija ne podržava dodjeljivanje zadane vrijednosti parametru metode.
2. Primjer
Kao primjer, skuhajmo čaj! Prvo, trebat će nam Čaj POJO:
čaj javne klase {static final int DEFAULT_TEA_POWDER = 1; privatni naziv niza; privatno int mlijeko; privatno booleovsko bilje; privatni int šećer; private int teaPowder; // standardni geteri}
Evo, Ime je obavezno polje, kao i naše Čaj mora imati barem ime.
Zatim, ne može biti čaja bez čaja u prahu. Dakle, pretpostavit ćemo da korisnik želi standardnih 1 žlica teaPuder u čaju, ako nije osiguran u vrijeme poziva. To je tada naš prvi zadani parametar.
Ostali neobavezni parametri su mlijeko (u ml), bilje (dodati ili ne dodati) i šećer (u žlicama). Ako bilo koja od njihovih vrijednosti nije navedena, pretpostavljamo da je korisnik ne želi.
Pogledajmo kako to postići u Javi pomoću preopterećenja metoda:
javni čaj (naziv niza, int mlijeko, booleovsko bilje, int šećer, int teaPowder) {this.name = name; ovo.mlijeko = mlijeko; ovo.bilja = bilje; ovo.šećer = šećer; this.teaPowder = teaPowder; } javni čaj (naziv niza, int mlijeko, booleovsko bilje, int šećer) {ovo (naziv, mlijeko, bilje, šećer, DEFAULT_TEA_POWDER); } javni čaj (naziv niza, int mlijeko, booleovsko bilje) {ovo (naziv, mlijeko, bilje, 0); } javni čaj (naziv niza, int mlijeko) {ovo (ime, mlijeko, netočno); } javni čaj (naziv niza) {this (name, 0); }
Kao što je vidljivo, ovdje koristimo ulančavanje konstruktora, oblik preopterećenja za pružanje parametara metode s nekim zadanim vrijednostima.
Dodajmo sada jednostavan test kako bismo ovo vidjeli na djelu:
@Test public void whenTeaWithOnlyName_thenCreateDefaultTea () {Tea blackTea = novi čaj ("Crni čaj"); assertThat (blackTea.getName ()). isEqualTo ("Crni čaj"); assertThat (blackTea.getMilk ()). isEqualTo (0); assertThat (blackTea.isHerbs ()). isFalse (); assertThat (blackTea.getSugar ()). isEqualTo (0); assertThat (blackTea.getTeaPowder ()). isEqualTo (Tea.DEFAULT_TEA_POWDER); }
3. Alternative
Postoje i drugi načini za postizanje zadane simulacije parametara u Javi. Neki od njih su:
- koristeći obrazac Graditelj
- pomoću Izbornog
- Dopuštanje nula kao argumenta metode
Evo kako možemo iskoristiti treći način dopuštanja null argumenata u našem primjeru:
javni čaj (Ime niza, Integer mlijeko, Booleovo bilje, Integer šećer, Integer teaPowder) {this.name = name; ovo.mlijeko = mlijeko == null? 0: milk.intValue (); this.herbs = bilje == null? lažno: bilje.booleanValue (); this.sugar = šećer == null? 0: šećer.intValue (); this.teaPowder = teaPowder == null? DEFAULT_TEA_POWDER: teaPowder.intValue (); }
4. Zaključak
U ovom smo članku pogledali korištenje preopterećenja metode za simulaciju zadanih parametara u Javi.
Iako postoje i drugi načini da se to postigne, preopterećenje je najčistije i najjednostavnije. Kao i uvijek, kod je dostupan na GitHub-u.