Retorna uma classe

9 respostas
E

ola gostaria de saber se tem algum metodo em java q por exemplo comparasse é um botao? é, entao me retornaria um JButton, ou se fosse JTextField.
simplificando na verdade é comparar se é a classe tal se for me retorne ela, um JButton, JTextfField ou uma classe q eu criei.
valeu galera. :grin:

9 Respostas

D

Vc quer saber se um objeto eh instancia de uma determinada classe?? se for, utilize o operador instanceof

exemplo:

javax.swing.JButton botao = new javax.swing.JButton();
if( botao instanceof javax.swing.JButton ) //retorna true
{
    ....
}
else if( botao instanceof javax.swing.JTextField ) //retorna false
{
    ....
}

espero ter ajudado…

E

po valeu, mas não é isso na verdade eu queria uma coersão dinâmica, tipo assim
= (TipodaClasse) Classe
eu ate sei como fazer poderia fazer um if antes e comparar e depois instanciava. mas queria ver se no java tem como.

D

Putz… nunca testei isso mas as vezes da certo… ow entaum sou burro d+ pra entender o q vc ta qrendo…

Class classe = javax.swing.JButton.getClass( );
Object obj;

if( classe.equals( javax.swing.JButton.getClass( ) ) )
{
     obj = classe.newInstance( );
}

da uma olhada no pacote java.lang… as vezes lah tem alguma coisa parecido com o que vc quer…

E

po valeu sua ideia é inteligente, mas não é exatamente isso

tipo assim…

comparo uma string q tem o nome da classe

String srt == JButton ; (seria equals)

dai eu tenho a classe, sao varias classes filhas diferentes entao tenho q fazer um cash dinamico.

superClasse classe = (JButton)superClasse;

o cash do JButton é so um exemplo mas sao classes q eu criei
e cada hora pode ser uma classe filha diferente ai tenho q fazer uma coesão dinamica.
vc sabe o é coesao ou cash(mesma coisa)? não é . só estou supondo q vc saiba blz amigo.

mas valeu a atençao.

D

“Ejunior”:
po valeu sua ideia é inteligente, mas não é exatamente isso

tipo assim…

comparo uma string q tem o nome da classe

String srt == JButton ; (seria equals)

dai eu tenho a classe, sao varias classes filhas diferentes entao tenho q fazer um cash dinamico.

superClasse classe = (JButton)superClasse;

o cash do JButton é so um exemplo mas sao classes q eu criei
e cada hora pode ser uma classe filha diferente ai tenho q fazer uma coesão dinamica.
vc sabe o é coesao ou cash(mesma coisa)? não é . só estou supondo q vc saiba blz amigo.

mas valeu a atençao.

cash??

vc quer dizer cast naum??

pelo que eu saiba naum tem como fazer um cast dinamico como vc falou… tipo ao inves de por o nome da classe, colocar uma string neh? pelo menos ate a versao 1.4 naum eh possivel… talvez na 1.5… mas nao sei te dizer…

E

o rapa realmente foi mal é cast, falha minha e q eu gostumo falar coersao, mas tudo bem, estou perguntando é pq um amigo disse q é possivel fazer no delphi por isso achei q talves tinha como fazer no java sacou.
mas valeu :lol:

D

as vezes ha uma forma… mas naum sei… tente bolar algo com aquela logica que te passei… pensando rapidamente creio que exista uma maneira… veja a classe java.lang.Class que vc vai ver uma forma de fazer isso…
tamos ae pra ajudar… flws

B

Ola, eu não sei se funciona para cast, mas tenta por refletion, tipo:

String c = "javax.swing.JButton";
Class class = Class.forName(c).newInstance(); 
superClasse classe = (class)superClasse;

Agora, eu não testei, mas como já disse o diegodrumond “as vezes dá certo”.

Valeu

D

“BrunoCarlo”:
Ola, eu não sei se funciona para cast, mas tenta por refletion, tipo:

String c = "javax.swing.JButton";
Class class = Class.forName(c).newInstance(); 
superClasse classe = (class)superClasse;

Agora, eu não testei, mas como já disse o diegodrumond “as vezes dá certo”.

Valeu

eu testei anteriormente… no cast ele naum aceita um objeto do tipo Class…[/code]

Criado 22 de dezembro de 2004
Ultima resposta 23 de dez. de 2004
Respostas 9
Participantes 3