Como iterar um arraylist de instâncias em um foreach?

Olá pessoal, tenho o seguinte trecho:

[code]
ArrayList peersArray = new ArrayList(Arrays.asList(this.pd01, this.pd02, this.pd03,
this.pd04, this.pd05, this.pd06, this.pd07, this.pd08, this.pd09, this.pd10, this.pd11,
this.pd12, this.pd14, this.pd15, this.pd16, this.pd17, this.pd18, this.pd19, this.pd20));

	for(Object peer : peersArray){
		if(peer.address == address ){
			
		}
	}[/code]

peersArray é um array de instâncias de classes diferentes, todas essas classes possuem uma variável pública chamada address. Porém quando faço ‘if(peer.address == address )’ acontece o erro: [color=red]‘address cannot be resolved or it is not a field’[/color]. Como contornar isso? Estou fazendo do jeito certo?

Abração e agradeço desde já,

O problema é que não tem como saber que seus objetos tem essa variável address, pois você definiu o tipo como objeto.

São todas essas variáveis do mesmo tipo? Se sim, utilize o tipo concreto ao invés de Object na sua declaração.

Se forem de tipos diferentes, tente fazer todos implementarem uma mesma interface com um método getAddress(), por exemplo, e declare o ArrayList como essa interface.

Algumas sugestões extras:

  • Procure declarar o tipo mais genérico possível para suas variáveis: Collection<AlgumaCoisa> per = new ArrayList<AlgumaCoisa>();
  • Não chame uma variável de Array (principalmente quando ela não for um).
  • Dê nomes claros para suas variáveis (não pd1, pd2, etc…)

São de tipos diferentes, tô procurando aqui como implementar interfaces.

Não entendi a parte do ‘declare o ArrayList como essa interface.’

Valeu!

O que o abel bueno falou está certo, mas se você precisa manter ArrayList por algum motivo então é possível fazer downcast

exemplo de downcast:

Object obj = new AlgumaCoisa();
if ( obj instanceof AlgumaCoisa )
{
AlgumaCoisa ac = ( AlgumaCoisa ) obj;

//Agora é possível acessar todos os membros do objeto!

}

Da pra fazer com Reflection, posta teu código todo aee que eu tento fazer aqui…