栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java8 静态方法引用-双冒号::

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java8 静态方法引用-双冒号::

java8 中静态方法的双冒号引用示例。

首先我们创建一个函数式接口

@FunctionalInterface
public interface ArrayInterface {
    public abstract int maxValue(int[] arr);
}

其次,静态方法一般都是工具类中用,我们写一个获取数组最大值的方法。

public class ArrayUtils {
    //定义一个方法返回数组的最大值
    public static int getMax(int[] arr){
        int max = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > max){
                max = arr[i];
            }
        }
        return max;
    }
}

然后我们开始一步步优化,具体的流程如下:


public class LamdbaExperss01 {
    public static void main(String[] args) {
        //定义整型数组,调用工具类的静态方法获得数组的最大值
        int[] arr = {1,33,5,7,9,13,25};
        //第一种  使用匿名内部类
        ArrayInterface a01 = new ArrayInterface() {
            @Override
            public int maxValue(int[] arr) {
                int max = arr[0];
                for (int i = 0; i < arr.length; i++) {
                    if (arr[i] > max){
                        max = arr[i];
                    }
                }
                return max;
            }
        };
        //调用a01对象的方法获得数组的最大值
        int maxValue01 = a01.maxValue(arr);
        System.out.println(maxValue01);


        //升级版  第二种  用Lamdba表达式简化 匿名内部类
        ArrayInterface a02 = (int[] arr02)->{
            int max = arr02[0];
            for (int i = 0; i < arr02.length; i++) {
                if (arr02[i] > max){
                    max = arr02[i];
                }
            }
            return max;
        };
        int maxValue02 = a02.maxValue(arr);
        System.out.println(maxValue02);


        //再升级版  第三种 在上面lamdba表达式中调用工具类的方法求数组的最大值
        ArrayInterface a03 = (int[] arr03)->{
            int max03 = ArrayUtils.getMax(arr03);
            return max03;
        };

        // 第三种简化后 第一版
        ArrayInterface a04 = (int[] arr03)->{ return ArrayUtils.getMax(arr03); };

        // 第三种简化后 第二版
        
        ArrayInterface a05 = arr05-> ArrayUtils.getMax(arr05);

        //第三种简化后  第三版
        
        ArrayInterface a06 = ArrayUtils::getMax;
        int maxValue06 = a06.maxValue(arr);
        System.out.println(maxValue06);
    }
}

最后的输出结果都一样:

33
33
33

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/590984.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号