Duvida de Java

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

Duvida de Java

Mensagempor osiris » Segunda Jan 03, 2005 11:49

Segundo entendo, uma classe que implemente um interface
torna-se, quando instanciada, também instancia desse interface além de
ser instancia da classe e das suas eventuais super-classes.

Sendo assim é possivel fazer um cast a um objecto que esteja numa
lista de modo a chamar o método que este implementa?

Exemplo:

o objecto "objecto" é da sub-classe ObjectoGeral e a sua classe
implementa o interface ObjectosMoveis.

crio um objecto da seguinte forma:

ObjectoGeral objecto = new ObjectoQQcoisa...

e adiciono-o à lista objectosMoveis.

o seguinte codigo de um iterador está correcto segundo o JBuilder mas
ao correr dá erro de ClassCast:

it = objectosMoveis.iterator();
while(it.hasNext()) {
IObjectoMovel objecto = (IObjectoMovel)it.next();
objecto.iniciarMovimento(tempo);

}

Alguem me pode ajudar?
osiris
Membro de Prata
Membro de Prata
 
Mensagens: 111
Registado: Terça Ago 10, 2004 13:47

Mensagempor Cadogan » Segunda Jan 03, 2005 14:50

Boas,

Segundo percebi, a tua class ObjectoGeral implenta a interface IObjectoMovel.

crias objectos:

ObjectoGeral objecto = new ObjectoGeral(..) ... e adicionas à lista objectosMoveis.

aki vais kerer percorrer a lista com os objectos e chamar um metodo da tua class que implementa a dita interface que estas a implementar:

it = objectosMoveis.iterator();

while(it.hasNext())
{
ObjectoMovel objecto = (ObjectoMovel)it.next();
objecto.iniciarMovimento(tempo);

}


penso que é isto que queres, ou seja, a tua class ObjectoGeral como implementa a interface IObjectoGeral, vai ter de implementar os metodos impostos pela interface.

Cumps.
Cadogan
Membro de Prata
Membro de Prata
 
Mensagens: 193
Registado: Segunda Out 04, 2004 11:45
Localização: LX/Braga

Mensagempor osiris » Segunda Jan 03, 2005 14:58

a classe já implementa os metodos.

o problema é que quando executo aquele codigo q escrevi aquilo estoira com um ClassCastException.

aquele codigo está em outra classe completamente à parte.
osiris
Membro de Prata
Membro de Prata
 
Mensagens: 111
Registado: Terça Ago 10, 2004 13:47

Re: Duvida de Java

Mensagempor ZePinga » Segunda Jan 03, 2005 19:37

osiris Escreveu:Segundo entendo, uma classe que implemente um interface
torna-se, quando instanciada, também instancia desse interface além de
ser instancia da classe e das suas eventuais super-classes.

Sendo assim é possivel fazer um cast a um objecto que esteja numa
lista de modo a chamar o método que este implementa?

Exemplo:

o objecto "objecto" é da sub-classe ObjectoGeral e a sua classe
implementa o interface ObjectosMoveis.

crio um objecto da seguinte forma:

ObjectoGeral objecto = new ObjectoQQcoisa...

e adiciono-o à lista objectosMoveis.

o seguinte codigo de um iterador está correcto segundo o JBuilder mas
ao correr dá erro de ClassCast:

it = objectosMoveis.iterator();
while(it.hasNext()) {
IObjectoMovel objecto = (IObjectoMovel)it.next();
objecto.iniciarMovimento(tempo);

}

Alguem me pode ajudar?


Oi

O objectoQQcoisa tem de extender a class ObjectoGeral logo quando fazes:

ObjectoGeral objecto = new ObjectoQQcoisa...

Estas a fazer um upcasting ou seja a transformar akele objecto num objecto da class base (ObjectoGeral) até aqui tudo bem e depois como tu dizes fazes:

"e adiciono-o à lista objectosMoveis."

Agora tenta isto

Iterator objectos = objectosMoveis.iterator();

while(objectos.hasNext()) {
IObjectoMovel objecto = (IObjectoMovel)objectos.next();
objecto.iniciarMovimento(tempo);
}

Não te eskecas do ---> import java.util.Iterator;

No inicio do code ou simplesmente --> import java.util.*;



Cyazz
IST, Lisbon DEI - LEIC
www.dei.ist.utl.pt
ZePinga
Aprendiz
Aprendiz
 
Mensagens: 98
Registado: Domingo Set 12, 2004 22:29


Voltar para Programação

Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante

cron