Parâmetros Default

7 respostas
B

Srs,

Não estou conseguindo entender como passar parâmetros default num método no Java.

Por exemplo, tenho um Bean com 5 atributos:

public class MeuBean {

  private String atrib1;
  private String atrib2;
  private String atrib3;

// getters and settes

// Construtor

}

Quero fazer um construtor que eu possa chamar com 0, 1, 2 ou 3 parâmetros, assim:

class TesteMeuBean {

  public static void main (String[] args) {

    MeuBean bean0 = new MeuBean();
    MeuBean bean1 = new MeuBean("Teste1");
    MeuBean bean2 = new MeuBean("Teste1","Teste2");
    MeuBean bean3 = new MeuBean("Teste1","Teste2","Teste3");

  }
}

Como eu declararia este construtor único, sem ter que sobrecarregar 4 vezes? Há como fazer isso?

Grato,
Buosi.

[size=“11”]
[color=“red”]

  • Editado: Aumente as chances de alguém responder o seu tópico. Use BBCode em seus códigos para mantê-los identados e mais legíveis para outros usuários. - Matheus[/color][/size] :joia:

7 Respostas

R

Não,

de jeito nenhum…

as assinaturas seram diferentes…

então, se vc quer ter um construtor com 1 parametro: declare

se quer com 2 ou 3 ou 1000, declare qts forem existir…

[]'s

R

ahhhh…

mas se tu quiser fazer isso, para um parametro do tipo Hash ou Vector ou qq outro desse tipo…

porem tu vai ter 1 unico metodo que so vai receber 1 unico parametro…

[]'s

B

Mas em outras linguagens eu faço isso. Por exemplo, no Delphi, eu declaro um metodo assim:

function Soma (Digito1: Integer; Digito2: Integer; Digito3: Integer := 0): Integer;

Aí posso chamar assim:

Result := Soma(2,3)

ou

Result := Soma(2,3,4)

Ambos são aceitos pelo compilador. No Java não dá pra fazer isso?

Grato,
Buosi.

S

Uma solução é passar um array de objetos ou de Strings, ou mesmo uma Coleção (Collection).

[]s

J

Meio xunxado, mas:

class Soma
{
  public static void main(String[] args)
  {
  Soma somado = new Soma();
  int ii[] = {2,3};
  System.out.println(somado.somando(ii));
  int iii[] = {2,3,4};
  System.out.println(somado.somando(iii));
  }

  int somando (int i[])
  {
  int soma=0;
  for (int cont=0; cont<i.length;cont++)
    soma += i[cont];
  return soma;
  }
}
Ve se isso ajuda. Senão acho que vai ter que usar a solução padrão de sobrecarregar os métodos mesmo (o que é usado nas API java).
S

A partir da versão 1.5 (Java Tiger), você também pode utilizar varargs, que são “argumentos de tamanho variável”:

class VarArgs {

  static void vaTest(int ... v) {
    System.out.print("N. de Argumentos: " + v.length + " Conteudo: ");

    for(int x : v)
      System.out.print(x + " ");

    System.out.println();
  }

  public static void main(String args[]) 
  {
    // vaTest() pode ser chamado de várias maneiras
    vaTest(10);      // 1 arg
    vaTest(1, 2, 3); // 3 args
    vaTest();        // nenhum arg
  }
}
B

Ok, Sabrina, parece que o Tiger contemplou essa necessidade…

Grato pela ajuda,

Buosi.

Criado 22 de julho de 2005
Ultima resposta 25 de jul. de 2005
Respostas 7
Participantes 4