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

Java匿名内部类与Lambda表达式

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

Java匿名内部类与Lambda表达式

       匿名内部类

       匿名内部类的作用是提供便捷的接口实现。在一些情况下,方法会使用接口作为参数,此时通过创建类并实现接口进行参数的传递。但是,有时候该类只需创建一次,如果用传统的创建类并实现接口的方法过于繁琐,因此用匿名类可以用匿名内部类实现。

        例如,Arrays.sort()中,重写比较器,就可以通过匿名内部类来实现。

public class Test {
    public static void main(String[] args) {
        Integer[] nums = new Integer[]{1, 2, 3, 4, 5, 6};
        //重写Comparator类中的compare方法
        Cmp cmp = new Cmp();
        Arrays.sort(nums, cmp);
        System.out.println(Arrays.toString(nums));
    }

    static class Cmp implements Comparator {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o2 - o1;
        }
    }
}

         在未使用匿名内部类的情况下,需要创建新的类。

public class Test {
    public static void main(String[] args) {
        Integer[] nums = new Integer[]{1, 2, 3, 4, 5, 6};
        //重写Comparator类中的compare方法
        Arrays.sort(nums,new Comparator(){ //匿名内部类
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });
        System.out.println(Arrays.toString(nums));
    }
}

         当使用匿名内部类后就无需再创建类,大大简化了代码。 

Lambda表达式

         Lambda表达式为接口中抽象方法的实现,其作用是简化匿名内部类实现代码作为方法接口实现参数的传递。

         Lambda表达式语法

()->{}
或者
(参数)->{}

        例如,在Arrays.sort()中

public class Test {
    public static void main(String[] args) {
        Integer[] nums = new Integer[]{1, 2, 3, 4, 5, 6};
        //Lambda表达式重写Comparator类中的compare方法
        Arrays.sort(nums, ((o1, o2) -> (o2 - o1)));
        System.out.println(Arrays.toString(nums));
    }
}

     Lambda表达式也有局限性,对于一个类中有多个抽象方法时,就不能使用Lambda表达式。

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

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

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