Cara…em tempo de execuçao vc pode usar o metoo getClass() do objeto Object…ele te retorna um objeto Class, indicando qual a classe do objeto…mas pra q vc ker saber o tipo da classe se vc vai poder inserir de qualker jeito???
Vlw!!
J
jaireltonPJ
Esse "inserir" que você fala, é quardar na lista? Se for, é exatamente assim que funcionam as listas do Java, elas recebem um Object, e internamente tem um array de Object.
ex.:
public class Lista{
private Object[] objetos;
public void inserir(Object obj){
//coloca no array
}
}
Existe um recurso chamado generics tambem que pode deixar isso um pouco mais sofisticado, mas acho que não é o que você quer agora!
I
infernalPJ
Essa “lista” é um TAD (Tipo Abstrato de Dados).
E ela pode ser implementada em qualquer linguagem.
Ela é baseada em “chave única”, ou seja, cada elemento
terá um número que o identificará.
Ela só usa alocação de memória dinâmica.
Não usa mais nenhuma classe java.
Eu não coloco o código fonte aqui pois ele é muito grande.
Essa classe deve servir pra fazer diversos tipos de listas.
Sem que seu código fonte seja editado.
Se eu quizer criar uma lista de aluno, eu consigo.
Se eu quizer criar uma lista de professores, eu consigo.
Somente criando outras classes e fazendo uso dessa classe ListaEncadeada.
Ex: class Aluno / class Professores / etc…
A classe ListaEncadeada possue métodos que necessitam acessar
métodos de outras classes.
Então através do conceito de “interface java” eu consigo fazer com
que estes métodos estejam presentes.
Que métodos são esses?
setChaveUnica
getChaveUnica
Então agora que vamos a minha dúvida!
Eu possuo uma classe aluno, esta classe efetuada o cadastro do aluno,
digamos que ela faz o seguinte:
nomeidadechave
Aluno umAluno = new Aluno (Rodrigo, 18 , 12345)
Então na classe ListaEncadeada
public void insereNoFinal (Aluno umAluno) {
}
Ou seja ela recebe o obj umAluno coloca ele na lista.
Porém, se eu decidir criar uma lista de professores?
nomeidadechave
Professor umProfessor = new Professor (Rafael, 55 , 13543)
public void insereNoFinal (Professor umProfessor) {
}
Ou seja, eu tenho que dar um jeito para que indepentende do
tipo de objeto que a lista receba, ele insira o elemento na lista.
Algo genérico deste tipo:
public void insereNoFinal (Object objQualquer) {
}
Se uma classe der:
Professor umProfessor = new Professor (Rafael, 55 , 13543)
Ele vai interpretar o Object objQualquer como Professor umProfessor,
e vai adicionar na lista.
Aluno umAluno = new Aluno (Rodrigo, 18 , 12345)
Ele vai interpretar o Object objQualquer como Aluno umAluno,
e vai adicionar na lista.
Acho que não tenho como ser mais detalhista do que isto.
Se alguém tiver alguma dúvida só perguntar.
FieroddPJ
Use a dica do jairelton … ai implemente seu codigo pra receber qualquer objeto
entao quando vc precisa retira-lo da lista e utilizado basta fazer o cast
publicvoidinsereNoInicio(Objectobj){//salva o objeto recebido}Alunoaluno=(Aluno)lista.getObjeto[0];ouProfessorprof=(Professor)lista.getObjeto[0]
no java qualquer classe concreta deriva de Object, portanto se sua lista armazana tipos object, ela pode armazenar qualquer tipo, contanto vc faça a conversão qdo necessario