Установка Свойство к тому, что maven.compile.classpath Содержит БЕЗ Муравья

Процитируем JEP Вывод типа локальной переменной JEP :

В цепочке вызовов вроде:

int maxWeight = blocks.stream()
                    .filter(b -> b.getColor() == BLUE)
                    .mapToInt(Block::getWeight)
                    .max();

никто не беспокоится (или даже отмечает), что промежуточные типы Stream и IntStream, а также тип лямбда-формальности b явно не указаны в исходном коде.

blockquote>

Вас это беспокоит?

, если один класс (скажем, «Репозиторий») меняет тип возвращаемого значения (например, с String на int). При явной типизации компиляция не удалась бы в классе, вызывающем «Репозиторий».

blockquote>

Если у вас есть перегрузки, такие как setText в вашем примере, то

Repository repository = ...;
myTextView.setText(repository.getFormerlyStringNowInt());

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

Stream stream1 = blocks.stream();
Predicate pred = b -> { 
    Color c = b.getColor();
    return c == BLUE;
};
Stream stream2 = stream1.filter(pred);
ToIntFunction getWeight = Block::getWeight;
IntStream stream3 = stream2.mapToInt(getWeight);
int maxWeight = stream3.max();

И в этот момент вы упрощаете ошибки, просто уменьшая удобочитаемость и возможность случайно использовать неправильную переменную.

Наконец, Kotlin не был создан в вакууме: дизайнеры могли видеть, что когда C # ввел локальный вывод типов в 2007 году, это не привело к значительным проблемам. Или они могли бы посмотреть на Scala, которая была у нее с начала 2004 года; у него было (и есть) множество жалоб пользователей, но локальный вывод типа не является одним из них.

10
задан 21 April 2009 в 18:08
поделиться

2 ответа

Я не думаю, что есть способ сделать это без написания собственного плагина maven. Тем не менее, вы можете попасть в classpath, используя зависимость : build-classpath . Это полезно?

5
ответ дан 3 December 2019 в 20:06
поделиться

Я подкрепляю зависимость: предложение build-classpath. В настоящее время он не помещается в свойство, но его можно легко изменить. (исправления приняты)

2
ответ дан 3 December 2019 в 20:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: