Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

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

#java #intellij_idea


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

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


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


Ответы

Ответ 1



Примитивный тип int нужно сначала привести к примитивному типу double - после этого boxing уже не нужен Double d = (double) i;

Ответ 2



У меня IDEA пишет также. Если возможен то используйте такой вариант Integer i = 5; Double d = getInt().doubleValue(); Либо, используйте, как IDEA и предлагает Double d = (double) getInt();

Комментариев нет:

Отправить комментарий