Java 为什么lambda表达式不';不写“.class”,但内部类写 publicstaticvoidmain(字符串[]args){ 比较器比较器=新比较器(){ @凌驾 公共整数比较(字符串o1、字符串o2){ 返回整数.compare(o1.length(),o2.length()); } }; 比较器比较器1=(字符串a、字符串b)->{ 返回整数。比较(a.length(),b.length()); }; 比较器比较器2=比较器。比较(字符串::长度); }

Java 为什么lambda表达式不';不写“.class”,但内部类写 publicstaticvoidmain(字符串[]args){ 比较器比较器=新比较器(){ @凌驾 公共整数比较(字符串o1、字符串o2){ 返回整数.compare(o1.length(),o2.length()); } }; 比较器比较器1=(字符串a、字符串b)->{ 返回整数。比较(a.length(),b.length()); }; 比较器比较器2=比较器。比较(字符串::长度); },java,java-8,Java,Java 8,类文件: Lambda和Nonymousiner$1.5级和 Lambda和Nonymousinner.class LambdaAndAnonymousInner$1.class是comparator comparator1和comparator2不写入.class文件 我想知道为什么会发生这种情况,这是因为lambda是动态调用的 请参阅: public static void main(String[] args) { Comparator<String> compar

类文件: Lambda和Nonymousiner$1.5级和 Lambda和Nonymousinner.class

LambdaAndAnonymousInner$1.class是
comparator

comparator1
comparator2
不写入
.class
文件


我想知道为什么会发生这种情况,这是因为lambda是动态调用的

请参阅:

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);

}