Understøtter Java standardparameterværdier?

Jeg stødte på noget Java-kode, der havde følgende struktur:

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

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

Jeg ved, at jeg i C++ kan tildele en parameter en standardværdi. F.eks:

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

Understøtter Java denne form for syntaks? Er der nogen grunde til, at denne syntaks i to trin er at foretrække?

Løsning

Nej, den struktur, du har fundet, er den måde, som Java håndterer det på (dvs. med overbelastning i stedet for standardparametre).

For konstruktører, Se Effective Java: Programming Language Guide's Punkt 1 tip (Overvej statiske fabriksmetoder i stedet for konstruktører), hvis overbelastningen bliver kompliceret. For andre metoder kan det hjælpe at omdøbe nogle tilfælde eller bruge et parameterobjekt. Dette er når du har nok kompleksitet til at det er svært at skelne. Et konkret tilfælde er, hvor du skal differentiere ved hjælp af rækkefølgen af parametre, ikke kun antal og type.

Kommentarer (7)

Desværre ikke.

Kommentarer (13)

Nej.

Du kan opnå den samme adfærd ved at overdrage et objekt med smarte standardindstillinger. Men igen afhænger det af, hvad din sag drejer sig om.

Kommentarer (0)