package SimpleTest;
/**
* @className: Test10
* @description: //函数式接口
* @author: CCQ
* @date: 2021/9/11
**/
public class Test10 {
}
//Java提供了一个注解,表明这个接口是个函数式接口
//这个注解是可选的,不写也可以,写了可以规范接口为函数式接口,不写只要接口里面只有一个抽象方法也是函数式接口
@FunctionalInterface
interface k{
void a();
// void b();会报错,因为有functionalInterface注解表明是一个函数式接口
}
package SimpleTest;
/**
* @className: Test11
* @description: 函数式接口作为方法的参数
* @author: CCQ
* @date: 2021/9/11
**/
public class Test11 {
public static void main(String[] args) {
//匿名内部类实现接口
thradstart(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"线程0启动啦!");
}
});
//lambda表达式实现接口
thradstart(()-> System.out.println(Thread.currentThread().getName()+"线程1启动啦!"));
}
public static void thradstart(Runnable r){
new Thread(r).start();
}
}
package SimpleTest;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/**
* @className: Test12
* @description: 函数式接口作为方法的返回值
* @author: CCQ
* @date: 2021/9/11
**/
public class Test12 {
public static void main(String[] args) {
ArrayList<String> a1 =new ArrayList<>();
a1.add("abdaaaaaawd");
a1.add("aaadwdwwdd");
a1.add("cacfd");
a1.add("gewwesvw");
//排序
Collections.sort(a1);
//排序后
System.out.println(a1);
//按照自定义的长度排序
Collections.sort(a1,getCom());
System.out.println(a1);
}
static Comparator<String> getCom(){
//匿名内部类实现接口排序
// return new Comparator<String>() {
// @Override
// public int compare(String o1, String o2) {
// return o1.length()-o2.length();
// }
// };
//lambda表达式实现接口排序
// return (String s1,String s2)->{
// return s1.length()-s2.length();
// };
//简化lambda表达式
return (s1,s2)-> s1.length()-s2.length();
}
}