@FunctionalInterfaceinterfaceIMath{publicintadd(int x,int y);}publicclassJavaDemo{publicstaticvoidmain(String args[]){
IMath math =(t1,t2)->t1 + t2;//只有一個返回語句
System.out.print(math.add(10,20));}}
方法引用
概念
引用靜態方法:類名稱 ::static方法名稱;
引用某個實例對象的方法:實例化對象::普通方法;
引用特定類型的方法:特定類::普通方法;
引用構造方法:類名稱:: new
引用靜態方法
@FunctionalInterface
interface IFunction<P,R>{
public R change(P p);
}
public class JavaDemo{
public static void main(String[] arges){
IFunction<Integer,String> fun = String :: valueOf;
String str = fun.change(100);
System.out.println(str);
}
}
引用實例化對象
@FunctionalInterface
interface IFunction<R>{
public R Upper();
}
public class JavaDemo{
public static void main(String[] arges){
IFunction<String> fun = "bridge" :: toUpperCase;
System.out.println(fun.Upper());
}
}
引用特定類
@FunctionalInterface
interface IFunction<P>{
public int compare(P p1,P p2);
}
public class JavaDemo{
public static void main(String[] arges){
IFunction<String> fun = String :: compareTo;
System.out.println(fun.compare("A","a"));
}
}
構造方法的應用
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public String toString(){
return "name:" + this.name + "age:" + this.age;
}
}
@FunctionalInterface
interface IFunction<R>{
R create(String s,int a);
}
public class JavaDemo{
public static void main(String[] arges){
IFunction<Person> fun = Person :: new ;
System.out.println(fun.create("張三",18));
}
}
內建函數式接口
java.util.function開發包中
功能性函數式接口
有輸入,有輸出
import java.util.function.*;
public class JavaDemo{
public static void main(String[] arges){
Function<String, Boolean> fun = "**Ssadfas" :: startsWith ; //String表示輸入值,Boolean表示輸出值
System.out.println(fun.apply("**"));//返回的true
}
}
消費型函數式接口
只有輸入,沒有輸出
import java.util.function.*;
public class JavaDemo{
public static void main(String[] arges){
Consumer<String> con = System.out :: println ;
con.accept("bridge");
}
}
供給型函數接口
只有輸出,沒有輸入
import java.util.function.*;
public class JavaDemo{
public static void main(String[] arges){
Supplier<String> sup = "BRIDGE" :: toLowerCase ;
System.out.print(sup.get());
}
}
斷言型函數接口
import java.util.function.*;
public class JavaDemo{
public static void main(String[] arges){
Predicate<String> pre = "BRIDGE" :: equalsIgnoreCase ;
System.out.print(pre.test("bridge"));
}
}