首页 > 其他 > 详细

Lombda表达式(四)

时间:2020-03-14 12:03:27      阅读:153      评论:0      收藏:0      [点我收藏+]
/*
 * 自定义函数式接口:
 * 1、声明一个接口,只能包含一个抽象方法
 * 2、给这个接口加@FunctionalInterface
 */
public class Test {
    public static void main(String[] args) {
        //IntCalc tools形参,函数式接口,可以Lambda表达式赋值
        /*
         * (1)抽象方法:int cal(int a , int b);
         * (2)如何实现抽象方法
         *         例如:求a+b的和
         */
        getProduct(1,2, (int a , int b) -> {return a+b;});//new了一个IntCalc的实现类的对象,而且实现了IntCalc抽象方法
        
        getProduct(1,2, (a ,b) ->a*b);
    }

    //2、在测试类中定义public static void getProduct(int a , int b ,IntCalc tools), 
    //该方法的预期行为打印使用tools的cal(a,b)的计算结果
    public static void getProduct(int a , int b ,IntCalc tools){
        int result = tools.cal(a, b);
        System.out.println("结果:" + result);
    }
}
//1、定义一个函数式接口IntCalc,其中抽象方法int cal(int a , int b),使用注解@FunctionalInterface
@FunctionalInterface
interface IntCalc{
    int cal(int a , int b);
}
public class Test05 {
    public static void main(String[] args) {
        test01();
    }

    public static void test01() {
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);

        /*
         * default void forEach(Consumer<? super T> action)
         * 形参的类型是Consumer接口,可以使用Lambda表达式赋值
         * Consumer<T>  void accept(T t)
         *
         */
        list.forEach(num -> System.out.println(num));
    }

    /*
        源代码
     default void forEach(Consumer<? super T> action) {
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }
     */
}

 

Lombda表达式(四)

原文:https://www.cnblogs.com/hpdblogs/p/12491051.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!