[RESOLVIDO] Metodo genérico utilizando Instanceof - SESSÃO ERRADA

Olá,
Tenho uma classe Interface que serve apenas para a impressao de dados na tela.
Tenho várias classes, como por exemplo: Livro, Jornal, Cd … e todas estas sao subclasses da classe Acervo.
O meu método para a impressao das informações, recebe um objeto do tipo Acervo como mostrado abaixo:

public class Interface {

	public static void mostraAcervo(Acervo acervo) {
		if(acervo instanceof Cartaz){
			 
			System.out.println(
		    "Título: "+ acervo.getTitulo()+" - "+acervo.getnEdicao()+ "  - "+acervo.getCidade()+ "  - "+ acervo.getEditora()+ "  - "+acervo.getAno()+
		    "\n Palavras-chave:"+"\n 1."+acervo.getPalavraChave1()+"\n 2."+acervo.getPalavraChave2()+"\n 3."+acervo.getPalavraChave3());
			
		}else if(acervo instanceof Cd){
		
			//AQUI EU TERIA QUE IMPRIMIR OS DADOS QUE SAO COMUM A TODAS CLASSES(atributos da classe Acervo) e também alguns outros atributos como o tempo de duração (no caso do Cd) no qual eu teria que acessar com um get. Para ilustrar melhor ficaria assim:  acervo.getDuracao() - mas claro que não é possível fazer isso ja que a classe acervo não contém o método getDuracao() e quem o contém é  a classe filha(Cd)

			
		}

Então pessoal, como posso fazer para exibir estes atributos que são exclusivos da subclase?
Obrigado

Pessoal acho que já descobri: :roll:

Acervo Cd = acervo;

Problema resolvido.
Tinha esquecido que por a classe Cd ser classe filha de Acervo, eu posso criar um acervo do tipo cd.

Coloca a tag [RESOLVIDO] ai no tópico…

[quote=mano8801]Olá,
Tenho uma classe Interface que serve apenas para a impressao de dados na tela.
Tenho várias classes, como por exemplo: Livro, Jornal, Cd … e todas estas sao subclasses da classe Acervo.
O meu método para a impressao das informações, recebe um objeto do tipo Acervo como mostrado abaixo:

public class Interface {

	public static void mostraAcervo(Acervo acervo) {
		if(acervo instanceof Cartaz){
			 
			System.out.println(
		    "Título: "+ acervo.getTitulo()+" - "+acervo.getnEdicao()+ "  - "+acervo.getCidade()+ "  - "+ acervo.getEditora()+ "  - "+acervo.getAno()+
		    "\n Palavras-chave:"+"\n 1."+acervo.getPalavraChave1()+"\n 2."+acervo.getPalavraChave2()+"\n 3."+acervo.getPalavraChave3());
			
		}else if(acervo instanceof Cd){
		
			//AQUI EU TERIA QUE IMPRIMIR OS DADOS QUE SAO COMUM A TODAS CLASSES(atributos da classe Acervo) e também alguns outros atributos como o tempo de duração (no caso do Cd) no qual eu teria que acessar com um get. Para ilustrar melhor ficaria assim:  acervo.getDuracao() - mas claro que não é possível fazer isso ja que a classe acervo não contém o método getDuracao() e quem o contém é  a classe filha(Cd)

			
		}

Então pessoal, como posso fazer para exibir estes atributos que são exclusivos da subclase?
Obrigado
[/quote]

Que tal polimorfismo???


public class Cartaz extends Acervo {
...

   @override
   public String toString() {
       \retorna a impressao para cartaz 
   }
}



public class Cd extends Acervo {
...

   @override
   public String toString() {
       \retorna a impressao para Cd 
   }
}

...todas as outras mais que estendem acervo

E entao na impressao

public class Interface {  
   
     public static void mostraAcervo(Acervo acervo) {     
             System.out.println(acervo);
     }                
}