Galera,
Eu estava querendo otimizar este código abaixo utilizando reflection para instanciar um Enum dinâmicamente.
Hoje eu tenho dois enums que possuem uma lista de unidades que eu posso utilizar para converte valores daquele mesma unidade. E eu queria utilizar uma mesma função para receber dois Enums diferentes. Como enum não extend outra classe, eu não sei como fazer uma função mais genérica para evitar repetição de código.
Alguém aí consegue me ajudar?
public class Conversor {
public static String converte(Double valor, Object unidade) {
if (unidade instanceof EComprimento) {
return converte(valor, (EComprimento) unidade);
}
if (unidade instanceof EMassa) {
return converte(valor, (EMassa) unidade);
}
return null;
}
public static String converte(Double valor, EComprimento unidade) {
StringBuffer strbuf = new StringBuffer();
Unidade u = new Unidade(valor, unidade.getUnidade());
for (EComprimento e : EComprimento.values()) {
u.setUnidade(e.getUnidade());
if (e.equals(e.getPadrao())) {
strbuf.append(e.name() + " = " + u + " " + e.getSimbolo() + " (padrão)");
} else if (e.equals(unidade)) {
strbuf.append(e.name() + " = " + u + " " + e.getSimbolo() + " (selecionado)");
} else {
strbuf.append(e.name() + " = " + u + " " + e.getSimbolo());
}
strbuf.append("\n");
}
return strbuf.toString();
}
public static String converte(Double valor, EMassa unidade) {
StringBuffer strbuf = new StringBuffer();
Unidade u = new Unidade(valor, EMassa.getPadrao().getUnidade());
for (EMassa e : EMassa.values()) {
u.setUnidade(e.getUnidade());
if (e.equals(e.getPadrao())) {
strbuf.append(e.name() + " = " + u + " " + e.getSimbolo() + " (padrão)");
} else {
strbuf.append(e.name() + " = " + u + " " + e.getSimbolo());
}
strbuf.append("\n");
}
return strbuf.toString();
}
}