Pessoal, já estou algumas horas com um problema que é o seguinte. Tenho algumas interfaces e classes que as implementam.
public interface X { ... }
public class ClasseXY implements X { ... }
public class ClasseYX implements X { ... }
public class ClasseXX implements X { ... }
public class ClasseYY implements X { ... }
Determinado momento eu tenho que decidir qual classe usar e estou fazendo (a grosso modo) mais ou menos assim:
public X obterClasse(int i) {
String nomeClasse = "XY";
if (i == 1) nomeClasse = "YX";
else if (i == 2) nomeClasse = "XX";
else nomeClasse = "YY";
try {
Class cls = Class.forName("Classe" + nomeClasse);
return (X)cls; // **** ClassCastException ocorre aqui...
}
catch (...) { ... }
// resto do metodo ...
}
Por que eu não consigo fazer o up-casting?? Alguém poderia me dar uma idéia?

