Percorrendo Objects

2 respostas
J

Senhores, estou meio confuso com o uso de Objects:

Tenho a classe:

Publicacao{
  int id;
  List Autores;
  String[] chaves;
}

Autores{
  int idPublicacao;
  String nome;
}
ai tenho um Objects que tem É uma lista de Pubcalicoes Objects obj = //Vários Autores
while(obj.hasNext()){
  Autores aut = (Autores)obj.next(); //[b]Aqui eu transformei meu OBJECT em Autores 1 a 1!?!?[/b]
}
A pergunta é: Depois de ter feito isso, "obj" virou uma lista de Autores?

como faço pra acessar os atributos de AUTORES?

Agradeço desde já

2 Respostas

ViniGodoy

obj.next() retorna o próximo Object da lista.

Como todo autor é um Object, e na lista, apenas está cadastrado autores, você diz ao java.
"Ei cara, o object que estava na lista é um autor. Eu, programador e todo poderoso, assim o afirmo."

Se a lista não for de autores, você receberá um ClassCastException. É a doce maneira do Java de dizer:
"Desculpe, mas não era bem assim... aquele object da lista não era um autor".

Após o cast, você pode usar os métodos de autor normalmente.

while(obj.hasNext()){   
   //Aqui Você não transforma nada. Todo autor é um object. 
   //Você só diz que esse Object em especial é mesmo um autor.
  Autores aut = (Autores)obj.next();
  System.out.println(out.getNome()); //Pega o nome do autor
}

O tipo do objeto é definido na criação dele, no momento do new. E não em como vc referencia.

Object x = new Autor();

if (x instanceof Autor) //True. A variável x referencia objects, mas o objeto referenciado é um autor

Note que na lingua portuguesa ocorre a mesma coisa. Eu tenho uma pincher. Não é porque eu falo para você "O cachorro lá de casa é esperto", que minha pincher deixou de ser uma pincher e passou a ser um "Cachorro genérico". Eu só "referenciei" a minha pincher através da palavra "Cachorro", pois todo pincher é um cachorro e, portanto, a classe Picher seria uma filha da classe Cachorro. Por isso a relação de herança é chamada "relação é um".

Essa é a característica da abstração. Um sistema com abstração é possível pois as linguagens OO permitem o polimorfismo.

J

Muito boa a explicação!!! Obrigado Vinicius

Criado 20 de novembro de 2007
Ultima resposta 20 de nov. de 2007
Respostas 2
Participantes 2