Java的函數式接口
前面介紹了Lambda表達式,它所用的場所是創建只有一個抽象方法的接口的實例。這裏**只有一個抽象方法的接口就是函數式接口。**
如果一個接口包括兩個及以上抽象方法,那麼不能使用Lambda表達式,必須採用匿名內部類來創建這個接口的實例。
因此只有函數式接口纔可以寫成Lambda表達式的形式:
(1)將Lambda表達式賦值給函數式接口,如下所示:
interface Convert{
Integer convert(String str);
}
public class test{
public static void main(String[] args) {
//直接將Lambda表達式賦值給Convert接口變量
Convert cov=str->Integer.valueOf(str);
Integer i=cov.convert("99");
System.out.println(i);
}
}
程序執行過程如下圖:
(2)將Lambda表達式作爲函數式接口類型的參數傳給某個方法
interface InterfaceA{
void taste();
}
class LamdabTest{
//普通方法1,其方法參數是接口1的一個對象
public void eat(InterfaceA ia) {
ia.taste();
}
public class test{
public static void main(String[] args) {
LamdabTest lt=new LamdabTest();
lt.eat(()->System.out.println("蘋果的味道很好"));
}
}
(3)使用函數式接口對Lambda表達式進行強制類型轉換
Object obj=(Runnable)()->{
for(int i=0;i<100;i++){
System.out.println(i);
}
}