Избегайте IntelliJ, оценивая ленивый список - PullRequest
0 голосов
/ 20 ноября 2018

Я реализовал реализацию java.util.List<T>, которая лениво вычисляет свои элементы.

Он работает нормально, за исключением того, что когда я использую IntelliJ для отладки кода, он начинает оценивать весь список.Отладчик IntelliJ настроен так, чтобы отображать только первые 100 элементов списка, но в любом случае отладчик оценивает весь список.

Могу ли я изменить настройку IntelliJ, разместить аннотацию, наследовать от другого класса или что-тоизменить это поведение?

Вот более простой класс, который демонстрирует проблему:

public class LazyList extends AbstractList<Integer> {
    @Override
    public Integer get(int index) {
        // If I place a breakpoint on the next line, IntelliJ starts evaluating 
        // the entire list.
        if (index > 10000) {
            System.out.println("Calling slow method");
            return 1;
        }
        return 0;
    }

    @Override
    public int size() {
        return 100000;
    }

    public static void main(String[] args) {
        LazyList list = new LazyList();
        System.out.println(list.get(100));
    }
}

1 Ответ

0 голосов
/ 20 ноября 2018

Вы можете снять флажок в File -> Settings -> Build, Execution, Deployment -> Debugger -> Enable auto expression в представлении Variables.

...