if (x instanceof W) x = (W) x;
else if (x instanceof X) x = (X) x;
else if (x instanceof Y) x = (Y) x;
else if (x instanceof X) x = (Z) z;
Não da… e supondo que x é do tipo number que vc atribuiu um integer, vc soh teria que fazer o casting se fosse atribuir a uma outra variável do tipo integer, mas ai vc ja teria que saber se x é realmente um integer, e como fazer isso sem usar instanceof ou comparar as classes?!
fazer x = (??) x não faz muito sentido, maça = maça sempre, sem cast e se vc tem uma fruta instanciada com maça e quer fazer cast para maça, tem que ter certeza de que a fruta é uma maça pois ali poderia vir uma laranja.
Mas de qq forma, se vc esta fazendo muito cast e usando java 5+, é pq vc não esta usando muito certo os generics.