Método com atributo final

6 respostas
P

Olá,

Eu gostaria de passar um parâmetro para um método que fosse uma constante, é possível?

Por exemplo:

Eu tenho vários métodos iguals (de nomes iguais) porém com corpo diferente (funcionalidades diferentes) e gostaria de chamalos separadamente difenciando-os apenas pela constante que vou passar como parâmetro. É possivel???

Por favor ajudem!!!

Agradeço desde já!!

PrimoItch

6 Respostas

I

Pode sim:

private void execute(final int value) {
    //TODO
}
 
//...
private static final int VALUE = 0;

//...
execute(VALUE);

T+

B

Ola,

Pô, sem querer me meter no designer de sua classe/funcionalidade, mas metodos com nomes iguais que fazem coisas diferentes… acho que vc precisa nomealos melhor…

Cuidade com o POG

J

Isso chama-se sobrecarga, e desde que a assinatura dos metodos seja diferente tudo bem:

ex.:

public int somar(int a, int b){
   return a+b;
}

public double somar(double a, double b){
   return a+b;
}

Só não nomeie metodos que não tem nada a ver com o mesmo nome, porque aí é como o BrunoCarlo falou!

I

Confesso que “li” o post dele e só agora entendi o que ele quis dizer. O overload de métodos (sobrecarga) neste teu caso não faz muito sentido. Usando a declaração de parâmetros double ele já vai suprir todas as necessidades de soma que tua aplicação precisar. Isto em função da promoção de tipos que o Java fará:

public double sum(final double op1, final double op2) { return op1 + op2; }
public void display(double result) { System.out.println(result); }

//...
display(sum(5, 3));
display(sum(5d, 3L));
display(sum((byte) 5, 3));
//...

T+

P

Certo, primeiramente obrigado pelos posts!!!

Bruno, eu to ligado quanto aos POG, é por isso que estou atraz de uma solução para meu problema, pra não fazer gambiarra!!!

Agora que eu tenho certeza que minha dúvida não ficou clara (como eu já previa, pois é uma coisa meio chata), vou explicar melhor.
O iktuz chegou perto de responde-la, mas ele colocou um código exatamente igual ao que eu fiz inicialmnete (que não era exatamente o que eu queria).

Vamos lá:

Eu tenho uma aplicação que nescessita calcular o valor de uma função várias vezes, chamando o método e passando como parâmetro os valores das variáveis, para entender melhor considere o seguinte:

static class Funções
{

static double função(Double variavel, AtributoX )
{
double resposta;
//Calcula o valor de uma eguação do segundo grau de acordo com a variável passada
...

return resposta
}

static double função(double variável, AtributoY)
{
double resposta;
//Calcula o valor de uma eguação do primeiro grau de acordo com a variável passada
...

return resposta
}

}

Onde Atributox e AtributoY são justamente os atributos que irá diferenciar a chamada dos métodos, e eu gostaria que eles fossem Strings, como por exemplo:

final private String ArtibutoX = “funcçao1”;

Porém eu não posso criar um método com um parâmetro “fixo”.

A última tentativa que eu tenho de explicar isso é a sequinte:

JOptionPane.showMessageDialog(Atributo1, Atributo2);

Neste método, o Atributo1 é como a menssagem deve ser aparecer, se é de alerta, pergunta, etc… E o Atributo2 é a frase que aparece na janela.

Eu sei que isso que eu quero fazer pode ser “estúpido” ou “sem sentido”, mas para minha aplicação é muito nescessária nescessária.

Agradeço pelo post de todos!!!

Até

PrimoItch

B

Ola PrimoItch,

O nome das funcoesnao podem ser “equacaoSegundoGrau” e “equacaoPrimeiroGrau”, por exemplo… e vc tomar a decisao de qual vai chamar do lado de fora delas…

E outro, vc pode usar no JOptionPane um combo, assim:

JOptionPane.showInputDialog(null, "Seleciona e equacao", "Equacoes", JOptionPane.QUESTION_MESSAGE, null, new String[]{"Selecione","Primeiro Grau", "Segundo Grau"}, "Selecione"); if(resposta == null){ //usuario concelou; }else if(resposta.equals("Primeiro Grau")){ //chama o metodo referente }else if(resposta.equals("Segundo Grau")){ //chama o metodo referente }

Criado 1 de dezembro de 2006
Ultima resposta 1 de dez. de 2006
Respostas 6
Participantes 4