Сегодня я прочитал эту статью относительно лямбда:
http://www.infoq.com/articles/Java-8-Lambdas-A-Peek-Under-the-Hood
В статье предлагается, что lambdas не реализованы как внутренние внутренние классы (из-за производительности). Это дает пример того, что выражение лямбда может быть скомпилировано как (статический) метод класса.
Я пробовал очень простой фрагмент:
private void run() {
System.out.println(this);
giveHello(System.out::println);
}
private void giveHello(Consumer<String> consumer) {
System.out.println(consumer);
consumer.accept("hello");
}
а выход:
[email protected]
sample.Main$$Lambda$1/[email protected]
hello
Итак, это не тот же самый экземпляр. Это не какой-то центральный экземпляр "Lambda Factory".
Как реализованы lambdas?