Jeśli twoje argumenty są tego samego typu można użyć varargs:
public int something(int... args) {
int a = 0;
int b = 0;
if (args.length > 0) {
a = args[0];
}
if (args.length > 1) {
b = args[1];
}
return a + b
}
ale w ten sposób można stracić semantyki poszczególnych argumentów lub
mieć przeciążoną metodę, która przekazuje połączenie do wersji o zmienionym parametrze
public int something() {
return something(1, 2);
}
lub jeśli metoda jest częścią jakiejś procedury inicjalizacji, można użyć wzoru budowniczy Zamiast:
class FoodBuilder {
int saltAmount;
int meatAmount;
FoodBuilder setSaltAmount(int saltAmount) {
this.saltAmount = saltAmount;
return this;
}
FoodBuilder setMeatAmount(int meatAmount) {
this.meatAmount = meatAmount;
return this;
}
Food build() {
return new Food(saltAmount, meatAmount);
}
}
Food f = new FoodBuilder().setSaltAmount(10).build();
Food f2 = new FoodBuilder().setSaltAmount(10).setMeatAmount(5).build();
następnie pracować z obiektem Food
int doSomething(Food f) {
return f.getSaltAmount() + f.getMeatAmount();
}
Wzór Builder pozwala możesz później dodawać/usuwać parametry i nie musisz tworzyć dla nich nowych przeciążonych metod.
zasadzie taki sam, jak ten: '? Czy wsparcia Java domyślne wartości parametrów' http://stackoverflow.com/questions/997482/does -java-support-default-parameter-values – Jonik