Super Método

8 respostas
F

Gostaria de saber se é possível fazer um método em que o tipo de comparação fosse passado por parâmetro. Por exemplo:

Vector superMetodo (string1,string2,criterio){

if string1.compareToIgonoreCase(string2) > 0{

…

}

}// não é assim que eu quero
//EU QUERO DESSA FORMA

Vector superMetodo (string1,string2,criterio /*> < == != */  ){

if string1.compareToIgonoreCase(string2) criterio 0{}

}

acho que é isso… tem como??

8 Respostas

velo

Vc pode passar como parametro extra um char ou um inteiro… e dentro do teu metodos se faz um switch… recomendo passar int faz uma interface com os inteiros dentro.

VELO

kina

velo:
Vc pode passar como parametro extra um char ou um inteiro… e dentro do teu metodos se faz um switch… recomendo passar int faz uma interface com os inteiros dentro.

VELO


para complementar.
Criar constantes que representem esses valores com as operações. por exemplo:

public final int MENOR = 1;
public final int MAIOR = 2;
public final int MENOR_IGUAL = 3;
velo

kina:

para complementar.
Criar constantes que representem esses valores com as operações. por exemplo:

public final int MENOR = 1; public final int MAIOR = 2; public final int MENOR_IGUAL = 3;

Exato, pra isso a interface, pode colocar essas constantes lah dentro, fica bem limpinho daí.

VELO

Luca

Olá

Isto que você quer fazer é trivial em C. Mas como já responderam de um jeito vou responder por caminhos diversos.

Você conhece Design Patterns? Em 1997 em uma sessão do Java World Tour no Hotel Renaissance em SP, um palestrante disse que para ser programador era necessário conhecer Design Patterns e indicou o livro do GoF. Na hora do almoço sai e fui procurar este livro. Até hoje ele é atual. Entre os patterns do GoF tem um que serve ao seu caso. Veja o pattern Template Method no artigo Principles, Patterns, and Practices: The Strategy, Template Method, and Bridge Patterns

[]s
Luca (tentando ensinar a pescar)

danieldestro

Uma pergunta. Por que criar um método desses?

Não seria mais fácil fazer:

if( a > b ) {
}

Do que fazer:

if( SuaClasse.comparar( a, b, SuaClasse.MAIOR ) ) {
}

???

louds

Java já possui suporte para isso.

Implemente essa interface com as formas de comparação que você quer e pronto.

F

Respondendo à pergunta anterior. Eu preciso fazer esse superMétodo pra evitar um ninho de mais de 30 “if´s”. Dessa forma, se for possível, eu tenho o código totalmente enxuto ao invés de fazer, por exemplo:

if nome1 > nome2{}

if cpf1 == cpf2{}

if renda1< renda2{}

…

e assim por diante…
Só pra vcs terem uma idéia eu tenho uma classe Cliente que possui 08 atributos e tenho que construir, da melhor forma, uma maneira de comparar uns com os outros… Tipo: comparar Cliente1 com vários clientes que eu já tiver em um cadastro.

danieldestro

Então, implemente o método equals( Object o ) da sua classe Cliente. É bem melhor. Aí você faz:

if( cli1.equals( cl2 ) ) {

// os dados são os mesmo.

// apesar de PODEREM ser obejtos diferentes

}
Criado 14 de abril de 2005
Ultima resposta 14 de abr. de 2005
Respostas 8
Participantes 6