private void myMethod(String s, int i, Long l){
//esse aqui faz o bagulho
}
private void myMethod(String s, int i){
//esse aqui chama o outro com valor padrao
this.myMethod(s, i, new Long(2));
}
private void myMethod(String s) {
//esse aqui chama o outro com dois valor padrao
this.myMethod(s, 0, new Long(2));
}
Cara, você pode fazer isso utilizando sobrecarga de métodos, assim terá um método para cada chamada sua (não muito elegante e produtivo), ou então pode utilizar um recurso do java 5 chamado varargs…
Procura no google sobre varargs…
Aí vai uma ajuda… http://today.java.net/today/2004/09/30/varargs.pdf
Na versção do Java 5 saiu uma forma de argumento nova chamada “varargs” que é exatamente o que voce quer, fazer com que um argumento seja opcional ou nao. E ele tem uma coisa a mais, este argumento pode receber inúmeros parametros nele.
Ex:
private void myMethod(String s, int i String... arg)
quando vc chamar este método vc pode chamá-lo das seguintes maneiras:
public void myMethod(String s, int i, Long l){
}
public void myMethod(String s, int i) { myMethod (s, i, 1000); }
public void myMethod(String s) { myMethod (s, 1000, 3034526); }
Ou então usar varargs, mas você precisa tomar um pouco de cuidado. No seu caso, os tipos dos parâmetros são todos diferentes, e varargs é mais adequado quando os tipos são iguais. Se todos os tipos forem diferentes, então você tem de usar Object, como no caso que implementa seu exemplo:
public void myMethod (String s, Object... params) {
int i = 1000; Long l = 3034526;
if (params.length >= 1 && params[0] instanceof Integer) i = (Integer) params[0];
if (params.length >= 2 && params[1] instanceof Long) l = (Long) params[1];
...
}
Se os argumentos fossem do mesmo tipo e a versão do java >=5, vc poderia chamar assim:
private void myMethod(String... s){
//...
}
Neste caso, vc receberia um arrai de strings dentro do seu método, com quantos parametros vc quizesse…
Mas pra isso vc só pode usar um (…) e sempre como o ultimo argumento do método.
[edited]O pessoal tá sendo rápido… 3 respostas iguais ao mesmo tempo… isso sim, deve acontecer…[/edited]