Скомпилированы ли лямбды 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
Так что это не тот же экземпляр. Это не какой-то центральный экземпляр "Лямбда-фабрики" ..
Как тогда реализуются лямбды?