企业集团网站源码,在速卖通上具体网络营销方案,wordpress微信文章采集,多商家商城1、函数式接口概述 函数式接口: 有且仅有一个抽象方法的接口。Java中的函数式编程体现就是Lambda表达式。所以函数式接口即可以适用于Lambda使用的接口。如何检测一个接口是不是函数式接口? @FunctionalInterface放在接口定义的上方:如果接口是函数式接口,编译通过;如果不…
1、函数式接口概述
函数式接口: 有且仅有一个抽象方法的接口。Java中的函数式编程体现就是Lambda表达式。所以函数式接口即可以适用于Lambda使用的接口。如何检测一个接口是不是函数式接口?
@FunctionalInterface放在接口定义的上方:如果接口是函数式接口,编译通过;如果不是,编译失败。package com.test8;@FunctionalInterface
public interface Inter {void show();
}package com.test8;public class Demo {public static void main(String[] args) {Inter i=()- System.out.println("Hello world!");i.show();}
}注意:自定义函数式接口时,@FunctionalInterface是可选的,就算不写这个注解,只要保证满足函数式接口定义的条件,也照样是函数式接口。 2、函数式接口做为方法的参数
如果方法的参数是一个函数式接口,可以使用Lambda表达式作为参数传递。
package com.test9;public class Demo {public static void main(String[] args) {startThread(new Runnable() {@Overridepublic void run() {System.out.println(Thread.currentThread().getName()+"线程启动");}});startThread(()- System.out.println(Thread.currentThread().getName()+"线程启动"));}private static void startThread(Runnable r){Thread t=new Thread(r);t.start();}
}3、函数式接口作为方法的返回值
如果方法的返回值是一个函数式接口,可以使用Lambda表达式作为结果返回。
package com.test10;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;public class Demo {public static void main(String[] args) {ArrayListString array=new ArrayListString();array.add("aa");array.add("b");array.add("cccc");array.add("ddd");System.out.println("排序前:"+array);Collections.sort(array);System.out.println("自然排序后:"+array);Collections.sort(array,getComparator());System.out.println("指定比较器排序后:"+array);}private static ComparatorString getComparator(){ //匿名内部类方式实现
// ComparatorString comp=new ComparatorString() {
// @Override
//