函数式接口例题
练习1:
/*
* 1)声明函数式接口,接口中声明抽象方法,public String getValue(String str)
* 2)声明类 TestLambda,类中编写方法使用接口作为参数,操作字符串
*/
public class TestLambda02 {
public static void main(String[] args) {
String str = " hiudhiuwhdowjd dhjdwjdw ";
//使用Lambda表达式
System.out.println(operate(str,s->s.trim()));
System.out.println(operate(str,s->s.toUpperCase()));
System.out.println(operate(str,s->s.substring(2,5)));
}
//定义方法,将函数接口作为参数
public static String operate(String s,MyFunction my){
return my.getValue(s);
}
}
//定义函数式接口
interface MyFunction{
public String getValue(String str);
}
练习2:
/*
* 1)声明一个带两个泛型的函数式接口,发型类型为<T,R> T为参数,R为返回值
* 2)接口中声明对应抽象方法
*/
public class TestLambda03 {
public static void main(String[] args) {
//使用Lambda表达式
System.out.println(operate(300,200,(l1,l2)->l1+l2));
System.out.println(operate(300,200,(l1,l2)->l1-l2));
System.out.println(operate(300,200,(l1,l2)->l1*l2));
System.out.println(operate(300,200,(l1,l2)->l1/l2));
}
//定义方法,将函数接口作为参数
public static long operate(long l1,long l2,MyFunction2<Long,Long> my){
return my.caculate(l1,l2);
}
}
//定义函数式接口
interface MyFunction2<T,R>{
public R caculate(T t1,T t2);
}