为什么lambda表达式不会写`.class`而是内部类

时间:2017-05-23 02:20:15

标签: java java-8

public static void main(String[] args) {

    Comparator<String> comparator = new Comparator<String>() {
        @Override
        public int compare(String o1, String o2) {
            return Integer.compare(o1.length(), o2.length());
        }
    };

    Comparator<String> comparator1 = (String a, String b) -> {
        return Integer.compare(a.length(), b.length());
    };


    Comparator<String> comparator2 = Comparator.comparing(String::length);

}

类文件: LambdaAndAnonymousInner $ 1.class和 LambdaAndAnonymousInner.class

LambdaAndAnonymousInner $ 1.class为comparator

comparator1comparator2不会写.class个文件

我想知道为什么会发生

1 个答案:

答案 0 :(得分:5)

这是因为lambdas是动态调用的。

请参阅:http://wiki.jvmlangsummit.com/images/1/1e/2011_Goetz_Lambda.pdf