函式式介面:有且僅有一個抽象方法的介面
Java中的函式式編程體現的就是Lambda運算式,所以函式式介面就是可以適用于Lambda使用的介面,只有確保介面中有且僅有一個抽象方法時,Java中的Lambda才能順利地進行推導
如何檢測一個介面是不是函式式介面?
使用注解: @Functionallnterface
放在介面定義的上方:如果介面是函式式介面,編譯通過;如果不是,編譯失敗
示例
介面
package Demo042601;
@FunctionalInterface
//該注解表示此介面為函式式介面
public interface MyInter {
void show();
}
測驗類
package Demo042601;
?
public class MyInterDemo {
public static void main(String[] args) {
MyInter mi=()-> System.out.println("最美不過姑娘你");
mi.show();
}
}
一、函式式介面作為方法的引數
如果方法的引數是一個函式式介面,我們可以使用Lambda運算式作為引數傳遞
示例:
定義一個類(RunnableDemo),在類中提供方法
startThread(Runnable r)方法引數Runnable 是一個函式式介面,并呼叫
public class RunnableDemo {
public static void main(String[] args) {
startThread(()-> System.out.println(Thread.currentThread().getName()+"執行緒啟動了"));
?
}
private static void startThread(Runnable r){
new Thread(r).start();
}
}
二、函式式介面作為方法的回傳值
示例:
定義一個類(ComparatorDemo),在類中提供一個方法
Comparator<String>getComparator()方法回傳值Comparator是一個函式式介面并呼叫
package Demo042602;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class ComparatorDemo {
public static void main(String[] args) {
//對一個陣列按照長度排序
ArrayList<String>al=new ArrayList<String>();
al.add("aa");
al.add("b");
al.add("ccc");
al.add("dddd");
Collections.sort(al,getComparator());
System.out.println(al);
}
private static Comparator<String> getComparator(){
return (String s1,String s2)-> s1.length()-s2.length();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/465059.html
標籤:其他
上一篇:docker的基本使用
下一篇:PTA刷題筆記
