Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] double vs Double

Por que ao invés de fazermos essa jogada para aproveitar o compareTo pronto da classe wrapper Double:

@Override
public int compareTo(Compra outraCompra) {
  return Double.valueOf(this.getValor()).compareTo(Double.valueOf(outraCompra.getValor()));
}

Não declaramos o atributo da classe como Double?

private Double valor;
1 resposta
solução!

A decisão de usar o tipo Double como tipo de atributo de uma classe em Java pode ser influenciada por vários fatores. Aqui estão algumas razões para escolher um tipo primitivo double ou o tipo wrapper Double:

  1. Performance: Tipos primitivos, como double, têm melhor desempenho em comparação com os tipos wrapper porque os tipos primitivos não são objetos e, portanto, não têm a sobrecarga associada aos objetos, como métodos e metadados.

  2. Nullabilidade: O tipo wrapper Double pode ser null, o que pode ser útil para representar a ausência de valor. Por outro lado, o tipo primitivo double sempre terá um valor padrão de 0.0 se não for explicitamente inicializado.

  3. Coleções: Se você precisa armazenar valores em coleções genéricas, como ArrayList, você deve usar o tipo wrapper Double, pois as coleções genéricas não suportam tipos primitivos.

  4. Comparação: O método compareTo da classe wrapper Double pode ser útil para comparações, pois ele lida com a ordenação de valores, incluindo NaN e infinito, de acordo com as regras de ponto flutuante.

Se você decidir declarar o atributo como Double, você pode simplificar o método compareTo da seguinte maneira:

@Override
public int compareTo(Compra outraCompra) {
  return this.valor.compareTo(outraCompra.getValor());
}

Isso elimina a necessidade de converter de double para Double usando Double.valueOf(). No entanto, você deve estar ciente de que isso pode introduzir a possibilidade de NullPointerException se valor for null.

Em resumo, a escolha entre double e Double depende das necessidades específicas do seu programa e das considerações de design. Se a performance for crítica e você puder garantir que um valor padrão de 0.0 é aceitável, então double pode ser a escolha certa. Se você precisar de flexibilidade com valores null ou estiver trabalhando com coleções genéricas, então Double seria mais apropriado.

Prezado, se você considerar respondido, favor fechar esse tópico.