Olá,
Em resumo:
O método compareTo()
é para comparação entre valores. Neste caso, será comparado os valores this.valor
e outraCompra.valor
. E depois, será retornado (return
) um valor inteiro (int
) dependendo de qual for o resultado dessa comparação (Double.valueOf(this.valor).compareTo(Double.valueOf(outraCompra.valor))
).
De forma um pouco mais detalhada:
A sua classe Compra
está implementando Comparable<Compra>
e por via de regra, será exigido que o método compareTo()
seja implementada. E essa implementação de comparação fica a seu critério, e na aula o critério diz:
return Double.valueOf(this.valor).compareTo(Double.valueOf(outraCompra.valor));
O método compareTo() faz uma comparação entre objetos, porém a sua variável valor
é do tipo primitivo, e não um objeto o que impede de usar o método diretamente da seguinte forma: this.valor.compareTo(); // Não pode!
. Então, para resolver esse problema, usamos classes Wrapper
que são classes especiais que possuem métodos capazes de fazer conversões em variáveis primitivas para serem trabalhados como objetos¹.
Links úteis / referência:
¹ http://www.linhadecodigo.com.br/artigo/3667/classes-wrappers-em-java.aspx