Lambda表达式

Lambda概述

Lambda表达式是JDK 8开始后的一种新语法形式。  

作用:简化匿名内部类的代码写法。

注意:Lambda表达式只能简化函数式接口的匿名内部类的写法形式

Lambda表达式的简化格式

(匿名内部类被重写方法的形参列表) -> {    被重写方法的方法体代码。 }

注:-> 是语法形式,无实际含义

什么是函数式接口?

定义:首先必须是接口、其次接口中有且仅有一个抽象方法的形式。

建议(不是必须)加上@FunctionalInterface注解,保证接口是函数式接口,否则报错。

Lambda实战-简化常见函数式接口

public class LambdaDemo3 {
    public static void main(String[] args) {
        Integer[] ages1 = {34, 12, 42, 23};
        /**
         参数一:被排序的数组 必须是引用类型的元素
         参数二:匿名内部类对象,代表了一个比较器对象。
         */
//        Arrays.sort(ages1, new Comparator() {
//            @Override
//            public int compare(Integer o1, Integer o2) {
//                return o2 - o1; //  降序
//            }
//        });

//        Arrays.sort(ages1, (Integer o1, Integer o2) -> {
//                return o2 - o1; //  降序
//        });


//        Arrays.sort(ages1, ( o1,  o2) -> {
//            return o2 - o1; //  降序
//        });

        Arrays.sort(ages1, ( o1,  o2 ) ->  o2 - o1 );

        System.out.println(Arrays.toString(ages1));

        System.out.println("---------------------------");
        JFrame win = new JFrame("登录界面");
        JButton btn = new JButton("我是一个很大的按钮");
//        btn.addActionListener(new ActionListener() {
//            @Override
//            public void actionPerformed(ActionEvent e) {
//                System.out.println("有人点我,点我,点我!!");
//            }
//        });

//        btn.addActionListener((ActionEvent e) -> {
//                System.out.println("有人点我,点我,点我!!");
//        });

//        btn.addActionListener(( e) -> {
//            System.out.println("有人点我,点我,点我!!");
//        });

//        btn.addActionListener( e -> {
//            System.out.println("有人点我,点我,点我!!");
//        });

        btn.addActionListener( e -> System.out.println("有人点我,点我,点我!!") );



        win.add(btn);
        win.setSize(400, 300);
        win.setVisible(true);
    }
}

Lambda表达式的省略规则

参数类型可以省略不写。

如果只有一个参数,参数类型可以省略,同时()也可以省略。

如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写,同时要省略分号。

如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写。此时,如果这行代码是return语句,必须省略return,同时也必须省略";"

你可能感兴趣的:(java,java)