2017-02-21 4 views
5

У меня есть следующие Java 8 код (упрощенный для демонстрации):Необязательный unboxing в java - как реорганизовать код?

public Double fooBar(int a) { 
    return Double.valueOf(a); 
} 

Теперь IntelliJ IDEA говорит мне, что у меня есть ненужный бокс в обратном сообщении. Я бы понял эту проблему, если a были типа double, но для int я чувствую, что мне нужен бокс, чтобы преобразовать его в double.

Есть ли хороший способ реорганизовать этот код, который я сейчас не вижу или это сообщение об ошибке от IntelliJ IDEA на данный момент просто не оптимально?

Спасибо за помощь

+1

, несомненно, символом 'int' значение может содержаться в' double' –

+0

@ScaryWombat: Я не понимаю ваш комментарий. Вы имеете в виду, что я могу удалить явное заявление о боксе? Насколько я понимаю, я не могу. –

+2

просто верните 'a' –

ответ

7

Если вы используете Alt-Enter, чтобы использовать предложенное решение «Удалить бокс», результат таков:

public Double fooBar(int a) { 
    return (double) a; 
} 

В этом случае переход от int к double очень в то же время избегая ручного бокса.

+0

Мне это нравится. Как вы сделали этот трюк Alt-Enter? Для меня это сообщение является только текстом-подсказкой, и я могу его расширить, нажав Ctrl + F1 ... –

+0

Вам нужно, чтобы указатель находился на отметке с ошибкой f2 до тех пор, пока он не будет расположен на соответствующем коде, enter должен работать – vikingsteve

+0

@ScaryWombat, если у вас просто есть 'return a;' (без приведения), появляется ошибка «Несовместимые типы» (Double vs int). – vikingsteve

6

Как насчет пребывания в первобытном царстве весь путь?

public double fooBar(int a) { 
    return a; 
} 
+0

Можно ли предположить, что изменение типа возврата из 'Double' в' double' ничего не сломает? – vikingsteve

+0

@vikingsteve Как это может сломать что-нибудь? Вы всегда можете назначить возвращаемое значение Double, и он будет автоматически установлен при этом назначении. Или сохраните возвращаемое значение как double, что намного эффективнее – auval

+0

Здесь невозможно изменить тип возвращаемого метода. Кстати: на самом деле это может сломать много вещей - авто-бокс не так прост и определенно не всегда «просто работает». –

Смежные вопросы