Избавиться от Unnecessary boxing

104
19 февраля 2021, 17:50

Есть такой код

int i = 5;
Double d = Double.valueOf(i);

(на самом деле код такой

int getInt() {
  ....
}
Double d = Double.valueOf(getInt());

но не суть)

На строку

Double d = Double.valueOf(i);

IDEA пишет

Warning: Unnecessary boxing.

Но какой же он Unnecessary, если мне нужно примитив int привести к объекту Double?

На строку

Double d = i

я уже получаю ошибку

Incompatible types. Required: java.lang.Double Found: int

Это баг анализатора, или все-таки как-то можно присвоение переписать?

Answer 1

Примитивный тип int нужно сначала привести к примитивному типу double - после этого boxing уже не нужен

Double d = (double) i;
Answer 2

У меня IDEA пишет также. Если возможно, то используйте такой вариант:

Integer i = 5;
Double d = getInt().doubleValue();

Либо используйте, как IDEA и предлагает:

Double d = (double) getInt();
READ ALSO
Java robot ломается в цикле

Java robot ломается в цикле

Недавно столкнулся с такой проблемой, как невозможность последовательного выполнения большого количества команд в цикле for в комбинации...

124
Преобразовать формат даты

Преобразовать формат даты

Приходит JSON вот с такой датой:

109
ошибка java.lang.NullPointerException, не стартует программа [закрыт]

ошибка java.lang.NullPointerException, не стартует программа [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

124