Dificuldade com carrinho de compras na pag 153

40 views
Skip to first unread message

Plex

unread,
May 3, 2017, 2:37:18 PM5/3/17
to livro-java-oo
 Estou com uma duvida ao fazer as alterações indicadas, substituir Produtos por Object e getProdutos() passa a apresentar um erro ( Type mismatch: cannot convert from Object[] to Produto[] ). Isso vai ser tratado mais a frente ou eu pulei alguma etapa?

 Obrigado

meu codigo

package br.com.casadocodigo.livraria.teste;
import br.com.casadocodigo.livraria.produtos.Produto;

public class CarrinhoDeCompras {

   
private double total;
   
//private Produto[] produtos = new Produto[10];
   
private Object[] objects = new Object[10];
   
public int contador = 0;
   

   
     
public void adiciona (Object object) {
           
System.out.println("Adicionado :" + object);
       
//    produto.aplicaDescontoDe(0.1);
           
this.objects[contador] = object;
            contador
++;
       
//    this.total += object.getValor();
           
Produto moldado = (Produto) object;
           
this.total += moldado.getValor();
       
}

     
     
public double getTotal(){
         
return total;
     
}
     
     
public Produto[] getProdutos(){
         
return objects; // erro: Type mismatch: cannot convert from Object[] to Produto[]
     
}
}


Rodrigo Turini

unread,
May 5, 2017, 12:55:41 PM5/5/17
to Plex, livro-java-oo
Olá, tudo bem?

é que o getProdutos() nesse caso deveria retornar um array de Object, assim como é declarado no tipo da classe. 
Logo em seguida dessa mudança o livro aponta o problema:

Só que se produtos fosse um array de Object, esse código não funcionaria como esperamos. Repare:

Object[] produtos = carrinho.getProdutos();
for (Object object : produtos) {
System.out.println(object.getValor());
}

Novamente: Object não tem o método getValor, portanto, o código não compila. Poderíamos fazer o casting, claro, mas veja como ficaria nosso código [...]

Daí pra frente são apresentadas algumas soluções, até chegarmos nos genérics das listas. 

Não deixe de perguntar se vendo o restante ainda não ficar claro, ta bem? 

abracos

--
Você recebeu essa mensagem porque está inscrito no grupo "livro-java-oo" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para livro-java-o...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para livro-...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/livro-java-oo/5eeb1b1d-5f4a-4056-9ebc-9b08843b9ec7%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages