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

  • 相关阅读:
    信号量的实现
    锁的实现
    Do PDB Files Affect Performance?
    分布式系统一致性算法(Raft)
    idea开发工具破解地址
    IOS设备上传图片,使用ImageIO.write 图片翻转纠正(JAVA)
    使用WebSocket进行消息推送(附代码)
    SpringCloud构建微服务 | 服务注册与发现(一)提供Demo
    @slf4j注解找不到log变量-已解决
    springBoot事务无法回滚 MyISAM与InnoDB区别
  • 原文地址:https://www.cnblogs.com/zhandouBlog/p/9383229.html
Copyright © 2011-2022 走看看