Tipo object..duvida

1 resposta
O

Olá..;.

estou com um duvida q persiste..

to com uma variavel do tipo Objetc...
o objetivo disso é recuperar um objeto que pode ser tanto JFrame quando JPanel...

class a {
Object obj;

a(Object o) {

   this.obj=o;
   // Agora preciso converter essa variavel para JPanel ou JFrame 
   // mas para isso preciso antes saber qual seu real tipo quando é passada por ela é parametro e logo converter para o tipo real
   if (this.obj instanceof JFrame) {
      this.obj = (JFrame) this.obj;      
   }else {
      this.obj = (JPanel) this.obj;
   }   
}

}

bom, nem sei se isso eh correto fazer, mas axo q deu pra te uma noção do q to tentando faze...logo pegando o tipo da variavel eu gostaria de executar suas funções de acordo com seu tipo...

se for do tipo JFrame eu irei usar a função para adicionar componetes assim "this.obj.getContentPane().add(componente)"
do contrario será assim "this.obj.add(componente)"

existe algum jeito de fazer algo parecido?? usar um unico nome de variavel para tipos diferentes??

outra coisa...

existe como eu declarar uma variavel PUBLICA PARA A CLASSE dentro de uma função...??

flw aee

1 Resposta

L

Da uma olhada se isso te serve:

public class Teste
{
   private Container obj;

   public Teste (Container o)
   {
      if ((!(o instanceof JFrame)) && (!(o instanceof JPanel))) throw new NullPointerException();
      this.obj = o;
   }

   public void add(Component x)
   {
      obj.add(x);
   }
}

acho que é mais certo assim…

e sobre declarar atributos da classe dentro de uma função, credo cara, assim vc me mata do coração hehe atriburos servem para guardar o estado do objeto, e vc quer que um deles fique dependente da execução de uma função?! ja pensou a nóia que isso geraria?! eu até imagino o que vc queria fazer, no construtor declarar de acordo com o que vc recebeu, mas isso vai contra todas as definições, o dia que Java tiver isso eu paro de programar heheh :wink: . Se vc guardar dois objetos totalmente diferentes, exemplo JFrame e String, ai tem que ser um tipo Objetc, justamete para o resto da classe poder usar ele de forma generica, que é o que os dois tem em comum (atributos de Object), se vc gravar duas coisas que tem algo além de Object em comum (JFrame e JPanel) então vc guarda o que eles tem em comum (Component). Por fim, ainda existem alguns designs patters que ajudam quando vc tem coisas muito diferentes e quer usar elas de formas genericas, como por exemplo Adapter para adaptar um tipo ao outro.

Criado 4 de novembro de 2006
Ultima resposta 6 de nov. de 2006
Respostas 1
Participantes 2