Duvidas com Reflexao junto com cast... + bugs do Shape

2 respostas
I

olá,

Gostaria de saber como converter um Object para o seu tipo mais específico, sem que se conheça este seu tipo.

Isso é para resolver, de uma forma, infelizmente, nao muito elegante, o seguinte problema:

//NAO FUNCIONA:

RectangularShape rec = shape.getBounds2D();

rec.setFrame(

x,

rec.getY(),

rec.getWidth(),

rec.getHeight()

);
//FUNCIONA:

RectangularShape rec = (RectangularShape)shape;

rec.setFrame(

x,

rec.getY(),

rec.getWidth(),

rec.getHeight()

);

Ou seja, pelo método getBounds2D, de Shape, eu não estou conseguindo alterar a posição do shape (neste caso acima, a abscissa x), de forma que eu sou obrigado a converter o shape pra seu tipo especifico para fazer isso. O problema é que meu subtipo de Shape não é somente RectangularShape, mas também um Line2D, entre outros… (há varios tipos na minha aplicacao…) Daí a necessidade de identificar de forma automatica o tipo pra fazer a conversao… Deu pra entender?!?

2 Respostas

F

Não entendi muito bem. rs…
Mas pra verificar se eh de um tipo ou de outro cria um metodo:

public String qualObjeto(Object obj){
   if(obj instanceof Objeto1){
      return "EH do tipo Objeto1"
   }else if(obj instanceof Objeto2){
          return "EH do tipo Objeto2" 
    }
}

Abraços.

I

essa solução nao serve pois dois motivos:
1-tem que testar tipo a tipo, que é justamente uma das razoes que eu nao quero no sistema. :confused:
2-imprimir na tela nao basta, tem que pegar o nome e dai usa-lo pra fazer a conversao… (bem que gostaria que fosse em shell, hehehe … ls, cat, tesouros da programacao!)

EDIT: explicando: o nome da classe nao importa, eu nao quero sabe o nome. O programa é que tem que usar esse nome, seja qual for, pra fazer a conversao…

Criado 15 de julho de 2006
Ultima resposta 15 de jul. de 2006
Respostas 2
Participantes 2