java自定义函数式接口_java基础之函数式接口

一、函数式接口在Java中是指:有且仅有一个抽象方法的接口,所以函数式接口就是可以适用于Lambda使用的接口

二、自定义函数式接口

格式:

@FunctionalInterface //该注解可省,一旦使用该注解来定义接口,编译器将会强制检查该接口是否确实有且仅有一个抽象方法,否则将会报错

public interface MyFunctionalInterface {

void myMethod();

}

例子:

public class FunctionalInterfaceTest {

public static void main(String[] args) {

show(()->{

System.out.println("使用lambda表达式执行");

});

}

public static void show(MyFunctionalInterface inner){

inner.method();

}

}

三、使用Lambda作为参数和返回值:如果方法的参数是一个函数式接口类型,那么就可以使用Lambda表达式进行替代。使用Lambda表达式作为方法参数,其实就是使用 函数式接口作为方法参数。

例子:Lambda作为参数

public class FunctionalInterfaceTest {

public static void main(String[] args) {

getThread1(new Runnable() {

@Override

public void run() {

System.out.println(Thread.currentThread().getName()+"....执行");

}

});

getThread2(()->{

System.out.println(Thread.currentThread().getName()+"....执行");

});

}

public static void getThread1(Runnable task){

new Thread(task).start();

}

public static void getThread2(Runnable task){

new Thread(task).start();

}

}

例子:作为返回值

public class ComparatorTest {

//定义一个方法,方法的返回值类型使用函数式接口Comparator

public static Comparator getComparator(){

/*

return new Comparator() {

@Override

public int compare(Integer o1, Integer o2) {

//降序

return o2 - o1;

}

};

*/

//使用lambda简写

return((o1, o2)-> o2 - o1);

};

public static void main(String[] args) {

Integer[] arr = {1,3,9,2,7,8};

System.out.println("....排序前...."+Arrays.toString(arr));

Arrays.sort(arr,getComparator());

System.out.println("....排序后...."+Arrays.toString(arr));

}

}

四、简单明了例子

public class MyInterfacesTest {

public static void main(String[] args) {

/* getMethod(new MyInterfaces() {

@Override

public int method(String s) {

return s.length();

}

});

*/

//简写方式

getMethod(s -> s.length()); //处理

}

public static void getMethod(MyInterfaces myInterfaces){

int len = myInterfaces.method("HelloWorld"); //传参

System.out.println("该字符串的长度为:"+len);

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值