Herança e ArrayList

Explicação:

Tenho uma classe Produto, e uma subclasse ProdAudio e ProdJogos que extendem Produto.

Tenho uma classe ListaProdutos que possui um arrayList de Produto, com metodos como cadastra, remove, busca, etc…

Minha duvida é, eu precisava de um método na classe ListaProdutos que retornasse um ProdAudio, mesmo usando o instanceOf com ele retornando um ProdAudio, não tem como eu criar uma referência de ProdAudio para receber o retorno desse método. Alguem sabe o que eu poderia fazer?

Se eu entendi bem a pergunta:

Se não há como usar o objeto como ProdAudio, então você não vai usar os métodos específicos dele como tal.

acho q n entendeu, eu quero um metodo q entre com o codigo do produto e retorne um prodAudio

ex:

public ProdAudio buscaCodigo(int codigo){
   for(Produto p: lista){
      if (p instanceof ProdAudio){
         ...
      }
   }
return prod;
}

sendo o prod do tipo ProdAudio, e a lista do tipo Produto, mas dá erro de compilação
e dps eu queria fazer em outra classe com a ListaProduto instanciada

ProdAudio p = listaProduto.buscaCodigo(codigo);

entendeu?

Que erro que dá? Você está fazendo o cast de Produto para o subtipo?

[quote=gugabarc]acho q n entendeu, eu quero um metodo q entre com o codigo do produto e retorne um prodAudio

ex:

public ProdAudio buscaCodigo(int codigo){
   for(Produto p: lista){
      if (p instanceof ProdAudio){
         ...
      }
   }
return prod;
}

[/quote]

Simplesmente faça o cast

public ProdAudio buscaCodigo(int codigo){
   for(Produto p: lista){
      if (p.codigo==codigo{
         return (ProdAudio)p;
      }
   }
return prod;
}