Tukeeko Java parametrien oletusarvoja?

Törmäsin Java-koodiin, jonka rakenne oli seuraava:

public MyParameterizedFunction(String param1, int param2)
{
    this(param1, param2, false);
}

public MyParameterizedFunction(String param1, int param2, boolean param3)
{
    //use all three parameters here
}

Tiedän, että C++:ssa voin antaa parametrille oletusarvon. Esimerkiksi:

void MyParameterizedFunction(String param1, int param2, bool param3=false);

Tukeeko Java tällaista syntaksia? Onko olemassa syitä, miksi tämä kaksivaiheinen syntaksi on parempi?

Ratkaisu

Ei, löytämäsi rakenne on se, miten Java käsittelee sen (eli ylikuormituksella oletusparametrien sijaan).

Konstruktoreiden osalta Katso Effective Java: Programming Language Guide's Kohdan 1 vinkki (Harkitse staattisia tehdasmetodeja konstruktoreiden sijasta), jos ylikuormittaminen käy monimutkaiseksi. Muiden metodien osalta joidenkin tapausten uudelleennimeäminen tai parametriobjektin käyttäminen voi auttaa. Tämä on silloin, kun monimutkaisuutta on niin paljon, että erottelu on vaikeaa. Selvä tapaus on, kun erottelu on tehtävä käyttämällä parametrien järjestystä, ei vain lukumäärää ja tyyppiä.

Kommentit (7)

Valitettavasti ei.

Kommentit (13)

Ei.

Voit saavuttaa saman käyttäytymisen välittämällä objektin, jolla on älykkäät oletusarvot. Mutta jälleen kerran se riippuu siitä, mikä tapaus on käsillä.

Kommentit (0)