Java8 双冒号-对象方法引用

双冒号的使用,之前写了一篇静态方法引用。今天这里再写一篇双冒号之对象方法的引用。

废话不多说,直接上代码,一切说明都在代码中:

准备步骤:

1、准备一个类,功能是是返回a-b之间的随机数

public class RandomNum {
    //返回a到b之间的随机数
    public int nextIntAtoB(int a,int b){
        Random random = new Random();
        return random.nextInt(b-a+1)+a;
    }
}

2、准备一个函数式接口

@FunctionalInterface
public interface NumberHelper {
    int nextAtoB(int a,int b);
}

3、上代码,开始展示优化


/**
 * 方法引用:对象方法引用
 * 对象方法引用概述:通过对象名来引用已存在的方法来简化Lamdba表达式,类似通过对象调用方法(非静态方法)
 * 对象方法引用格式:  对象名::方法名
 */
public class Lamdba_New {
    public static void main(String[] args) {
        //实现效果:调用NumberHelper接口中的方法生成100-200之间的随机数
        //方法1 使用匿名内部类来实现
        NumberHelper num01 = new NumberHelper() {
            @Override
            public int nextAtoB(int a, int b) {
                Random random = new Random();
                return random.nextInt(b-a+1)+a;
            }
        };
        System.out.println(num01.nextAtoB(100,200));

        //方法2:使用lamdba表达式简化
        NumberHelper num02 = (a,b)->{
            Random random = new Random();
            return random.nextInt(b-a+1)+a;
        };
        System.out.println(num02.nextAtoB(100,200));

        //方法3:在lamdba表达式中调用已经存在的方法
        //创建自定义的随机对象
        RandomNum r = new RandomNum();
        //此处即是通过对象调用已经存在的方法(至于怎么简化成一行的,参考我之前的博客文章)
        NumberHelper num03 = (a,b)-> r.nextIntAtoB(a,b);
        System.out.println(num03.nextAtoB(100,200));

        //方法4:使用对象方法引用简化lamdba表达式
        NumberHelper num04 = r::nextIntAtoB;
        System.out.println(num04.nextAtoB(100,200));
        
        }
}

以上的输出结果效果均同。O(∩_∩)O哈哈~

一起学习,一起秃头

猜你喜欢

转载自blog.csdn.net/LB_Captain/article/details/121712418
今日推荐