Intanceof (como fazer isto so tendo a classe)

3 respostas
T

bahhhhhhhhh alguem me da um solução mais simples… com melhor performance e menos trabalho… eu preciso do seuginte…

um cidadão me informa uma classe… um objeto Class … e eu tenho que saber se esta classe é instancia de java.awt.Component. … e se implementa uma interface minha GetActionPanelControler… o problema é q a classe não está instanciada… e c eu intancialá eu vou carregar… o que é ruim… pq vai carregar o sistema e talvez eu nem use… pq só vou usar a instancia se ela passar nos testes… eu conseguir solucionar… mas tó usando um WHILE e um FOR… bahhhh não gostei da minha solução… queria saber se tem algum meio de fazer como o instanceof… vlw

ai segue a minha solução

private static boolean isValidClass(Class classe) { Class[] interfaceClass = classe.getInterfaces(); boolean teste = false; for (int i = 0; i < interfaceClass.length; i++) { if (interfaceClass[i] == GetActionPanelControler.class){ teste = true; break; } } interfaceClass = null; if (teste) teste = false; else return false; while ((!teste) && (!classe.equals(Object.class))) { if (classe.equals(java.awt.Component.class)) teste = true; classe = classe.getSuperclass(); } return teste; }

alguem tem algum mode de fazer??? sem ter que usar… class.newInstance(); ???

3 Respostas

C

Olá Tomas,

Tente usar:

espero que ajude.

Mônica

T

Mônica... brigado ai pela juda... mas infelizmente assim tb não dá...

meu problema é que eu não tenho instancia do objeto... então não consigo fazer o teste... a não ser pelas classes... e pela classe meu retorno é falso... veja o caso a seguir...

public class Teste {

	public static void main(String[] args) {
		System.out.println(javax.swing.JPanel.class.isInstance(java.awt.Component.class));
	}
}

isto retorna falso.... mas o JPanel é sub-clase de Component ... e se eu tentar fazer sem a classe nem compila

public class Teste {

	public static void main(String[] args) {
		System.out.println(javax.swing.JPanel.class.isInstance(java.awt.Component));
	}
}
da erro de compilação....

Alguem mais tem alguma solução??

"conciani":
Olá Tomas, Tente usar:
classe.isInstance(objeto)

espero que ajude.

Mônica

T

Axi uma solução ... UAHuAHuauhauhauh

brigado monica por me mostrar o caminho

public class Teste {

	public static void main(String[] args) {
		System.out.println(java.awt.Component.class.isAssignableFrom(EmployeePanelEdit.class));
		System.out.println(GetActionPanelControler.class.isAssignableFrom(EmployeePanelEdit.class));
	}
}

deu true pros 2.... isAssignableFrom testa exatamente o que eu queria =]

Criado 29 de março de 2004
Ultima resposta 29 de mar. de 2004
Respostas 3
Participantes 2