Код: Выделить всё
@FunctionalInterface
interface StringConsumer extends Consumer {
@Override
public default void accept(String s) {
System.out.println(s.toUpperCase());
}
void print(String s);
}
public class Test {
public static void main(String[] args) {
StringConsumer stringConsumerImpl= s -> System.out.println(s.toLowerCase());
List list = Arrays.asList("Dr", "Mr", "Miss", "Mrs");
list.forEach(stringConsumerImpl);
}
}
DR
MR
MISS
MRS
Итак, что же происходит в этот код действительно странный для меня. На самом деле я предоставляю реализацию метода печати, но когда я запускаю код, он фактически использует реализацию метода по умолчанию.
Я ожидал, что реализация печати будет работать.
Редактировать: при методе печати удаляется из StringConsumer, это вызывает ошибку компиляции в основном методе
Подробнее здесь: https://stackoverflow.com/questions/793 ... and-having