Когда часы помещаются в точку останова, отладчик Java показывает упакованное целое число вместо примитива int

Этот простой пример демонстрирует проблему:

public class Main {
    interface Person {
        default int amountOfHands() {
            return 2;
        }
    }

    public static class BasicPerson implements Person {

        int numberOfFaces() {
            return 1;
        }
    }

    public static void main(String[] args) {
        System.out.println("Put a breakpoint here");
    }
}

Я запустил этот код в IntelliJ IDEA в режиме отладки и добавил два метода в основной метод:

new BasicPerson().amountOfHands();

new BasicPerson().numberOfFaces();

Оба метода должны возвращать примитив int, однако только второе наблюдение (метод класса) показывает примитив int, тогда как первый (метод интерфейса по умолчанию) показывает объект Integer в штучной упаковке.

Часы

Это почему? Это ошибка?

1 ответ

Я полагаю, это ошибка в IntelliJ IDEA. В Eclipse оба выражения оцениваются в примитивные значения, как и ожидалось.

Другие вопросы по тегам