zoukankan      html  css  js  c++  java
  • (3)方法引用

    首先定义一个接口

    public interface Calculation<T> {
        public T colculate(T t1, T t2);
    }

    这个接口只有一个方法也就是计算,下面展示三种使用这个接口的方式。

    //匿名内部类
    @Test
    public void test() {
        Calculation<Integer> calculation = new Calculation<Integer>() {
            @Override
            public Integer colculate(Integer num1, Integer num2) {
                return num1 + num2;
            }
        };
        Integer result = calculation.colculate(12);
        System.out.println(result);
    }
    //lambda表达式
    @Test
    public void test2() {
        Calculation<Integer> calculation = (num1, num2) -> num1 + num2;
        Integer result = calculation.colculate(12);
        System.out.println(result);
    }
    //方法引用
    @Test
    public void test3(){
        Calculation<Integer> calculation = Integer::sum;
        Integer result = calculation.colculate(12);
        System.out.println(result);
    }

    我感觉这个很明显的看出了匿名内部类的啰嗦,所以主要看一下lambda表达式和方法引用。

    他们都是把方法传给了一个对象,方法引用看起来更简洁,因为Integer::sum这个方法的具体代码就是接受两个int值,返回一个int值。

    和colculate方法的入参和返回值是一样的,所以这里是可以传递这个方法进去的。

    下面介绍java8支持的函数引用:

    首先就是上述使用的Integer::sum,类名+双冒号+静态方法,还有对象+双冒号+实例方法,还有类名+双冒号+new

  • 相关阅读:
    vpp编写plugin
    vrf 命令
    vxlan + 多个vrf
    dpdk helloworld
    Go函数高级
    Go_defer
    Go递归函数
    Go作用域
    Go函数
    Go字符串
  • 原文地址:https://www.cnblogs.com/zhandouBlog/p/9383229.html
Copyright © 2011-2022 走看看