Скомпилированы ли лямбды Java 8 как внутренние классы, методы или что-то еще? [Дубликат]

На этот вопрос уже есть ответ здесь:

Как будут скомпилированы лямбда-функции Java? 2 ответа

Сегодня я прочитал эту статью о лямбдах:

http://www.infoq.com/articles/Java-8-Lambdas-A-Peek-Under-the-Hood

Статья предполагает, что лямбдыне реализованы как внутренние классы (из-за производительности). Это дает пример того, что лямбда-выражение может быть скомпилировано как (статический) метод класса.

Я попробовал очень простой фрагмент:

private void run() {
    System.out.println(this);
    giveHello(System.out::println);
}

private void giveHello(Consumer<String> consumer) {
    System.out.println(consumer);
    consumer.accept("hello");
}

и вывод:

sample.Main@14ae5a5
sample.Main$Lambda$1/168423058@4a574795
hello

Так что это не тот же экземпляр. Это не какой-то центральный экземпляр "Лямбда-фабрики" ..

Как тогда реализуются лямбды?

Ответы на вопрос(4)

Ваш ответ на вопрос