Попаднах на код в Java със следната структура:
public MyParameterizedFunction(String param1, int param2)
{
this(param1, param2, false);
}
public MyParameterizedFunction(String param1, int param2, boolean param3)
{
//use all three parameters here
}
Знам, че в C++ мога да задам на даден параметър стойност по подразбиране. Например:
void MyParameterizedFunction(String param1, int param2, bool param3=false);
Java поддържа ли такъв синтаксис? Има ли някакви причини, поради които този двустъпков синтаксис е за предпочитане?
Не, структурата, която открихте, е начинът, по който Java работи с нея (т.е. с претоварване вместо с параметри по подразбиране).
За конструкторите, Вижте Effective Java: Programming Language Guide's съвет по точка 1 (Consider static factory methods instead of constructors), ако претоварването става сложно. За други методи може да помогне преименуването на някои случаи или използването на обект с параметри. Това се случва, когато имате достатъчно сложност, че разграничаването да е трудно. Определен случай е, когато трябва да разграничите, използвайки реда на параметрите, а не само броя и типа.
Не.
Можете да постигнете същото поведение, като подадете обект, който има интелигентни настройки по подразбиране. Но отново зависи какъв е вашият случай.