Ajuda com instanceof

4 respostas
fabioebner

Pessoa eu consigo faze o seguinte:

if( componente instanceof JLabel){ }
ate ae perfeito… agora eu fiz o seguinte… fiz um arraylist q tem varios tipos de componentes

private ArrayList<Container> tiposContainers = new ArrayList<Container>();
  tiposContainers.add(new JPanel());
  tiposContainers.add(new JScrollPane());

tem como eu fazer um tipo instanceof para verificar se o meu componente e de um tipo desses que esta dentro do arraylist??

tipo um

if(tiposContainer.contains( componente instanceof)){ }

valeu

4 Respostas

thiago.correa

Nops, a não ser que você percorra item por item do teu array list e vá testando um por um!

E
private ArrayList<Class> tipoContainers = new ArrayList<Class>();  
tiposContainers.add(JPanel.class);  
tiposContainers.add(JScrollPane.class); 

if (tipoContainers.contains(component.getClass())){

}

se o componente não é um extends, vai funcionar, senão, acho que vai ter que usar um for e verificar cada elemento da lista…

berg.pb

opa fabio

ve se isto ajuda:

public static void main(String args[]) {
				
			  ArrayList<Container> tiposContainers = new ArrayList<Container>();
			  tiposContainers.add(new JPanel());
			  tiposContainers.add(new JScrollPane());
			  
			  for(Iterator<Container> it = tiposContainers.iterator(); it.hasNext();){
				  	if (it.next() instanceof JPanel)
				  		System.out.println(true);
				  	else
				  		System.out.println(false);
			  }
	}
T

Essa idéia é interessante (lembra o uso de delegates e “Find” no .NET Framework 2.0 ou posterior). Infelizmente, em Java não há delegates, então você não pode filtrar um conjunto usando uma condição de uma forma simples. É necessário usar um “for” mesmo, como foi sugerido acima.

Criado 11 de março de 2009
Ultima resposta 11 de mar. de 2009
Respostas 4
Participantes 5