答:因为接口不能创建对象,当你new一个接口时,且接口只有一个抽象方法,你可以采用匿名内部类的普通写法,也可以使用lambda写法简写匿名内部类,也就是采用匿名内部类方式创建接口里的抽象方法的匿名(只用一次,没有变量存储)实现类对象;
参考匿名内部类的普通写法和Lambda写法区别 参考创建线程说明:红色的是可以省略的,蓝色时省略省略下来的,并且如果蓝色区域内的传参括号内参数只有一个,直接写参数变量即可
参考集合遍历和数组遍历说明:里面有些方法需要建立在jdk8版本的基础上
package com.jt.project;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.function.Consumer;
public class LambdaTests {
public static void main(String[] args) {
List list = Arrays.asList("A", "B", "C");
System.out.print("匿名内部类基本写法");
list.forEach(new Consumer() {
@Override
public void accept(String s) {
System.out.print(s);
}
});
System.out.println("----------------");
System.out.print("匿名内部类简洁写法");
list.forEach((s)-> {
System.out.print(s);
});
System.out.println("----------------");
System.out.print("匿名内部类超简洁写法");
list.forEach(
System.out::print
);
System.out.println("----------------");
String strArray[]={"abc","ab","a"};
Arrays.asList(strArray).forEach(new Consumer() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
Arrays.asList(strArray).forEach((s)-> {
System.out.println(s);
});
Arrays.asList(strArray).forEach(System.out::println);
Arrays.sort(strArray, new Comparator() {
@Override
public int compare(String o1, String o2) {
return o1.length() - o2.length();
}
});
Arrays.asList(strArray).forEach(System.out::println);
Arrays.sort(strArray, (o1, o2) -> {
return o1.length() - o2.length();
});
Arrays.asList(strArray)
.forEach(System.out::println);
Arrays.sort(strArray);
Arrays.asList(strArray)
.forEach(System.out::println);
}
}



