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