[quote=ViniGodoy]Por que o switch pode ser substituído por polimorfismo. Mesmo com enum, veja:
Ótimo link (até salvei em favoritos
). Pelo que eu vi, essa forma chega a ser extremamente mais rápido do que com switch.
Mas eu fiquei com uma dúvida.
Me recordo que em um tópico semelhante a este (no qual alguém perguntava como se fazia uma calculadora) você deu a mesma sugestão (de usar polimorfismo).
A minha dúvida é: se fosse algo como tipo, o usuário entra com a operação desejada pelo console, como você faria para que o programa escolhesse a operação correta.
Exemplo:
import java.util.Scanner;
public class Calculadora {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double valor1 = scan.nextDouble();
double valor2 = scan.nextDouble();
//O que colocar aqui?
}
}
enum Operacoes {
SOMAR {
@Override
public double realizarOperacao(double valor1, double valor2) {
return valor1 + valor2;
}
},
SUBTRAIR {
@Override
public double realizarOperacao(double valor1, double valor2) {
return valor1 * valor2;
}
},
MULTIPLICAR {
@Override
public double realizarOperacao(double valor1, double valor2) {
return valor1 * valor2;
}
},
DIVIDIR {
@Override
public double realizarOperacao(double valor1, double valor2) {
return valor1 / valor2;
}
};
public abstract double realizarOperacao(double valor1, double valor2);
}
O que eu deveria colocar ali e como fazer o programa entender qual operação a ser chamada com base no que o usuário informar?