Java利用Lambda表达式简化
目标:
使用Lambda的标准格式简化匿名内部类的代码形式,Lambda只能简化接口中只有一个抽象方法的匿名内部类形式
实现代码:
package apilambda.d9_lambda; public class LambdaDemo1 { public static void main(String[] args) { //目标:学会使用Lambda的标准格式简化匿名内部类的代码形式 //lambda只能简化接口中只有一个抽象方法的匿名内部类形式 //未简化的匿名内部类形式 // Swimming s=new Swimming() { // @Override // public void swim() { // System.out.println("老师游得快~~~"); // } // }; // go(s); //lambda简化的匿名内部类形式 // Swimming s=()->{ // System.out.println("老师游得快~~~"); // }; // go(s); System.out.println("-------------------------"); //继续简化 go(()->{ System.out.println("老师游得快~~~"); }); } public static void go(Swimming swim){ System.out.println("开始!!!"); swim.swim(); System.out.println("结束!!!"); } } @FunctionalInterface//一旦加上这个注解必须是函数式接口,里边只能有一个抽象方法 interface Swimming{ void swim(); }
Lambda表达式可以继续简化:
实现代码:
package apilambda.d9_lambda; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Arrays; import java.util.Comparator; /** * 目标:利用匿名内部类简化降序排列 */ public class LambdaDemo2 { public static void main(String[] args) { Integer[] arr = {23, 12, 34, 14, 17}; //匿名内部类,未简化 // Arrays.sort(arr, new Comparator<Integer>() { // @Override // public int compare(Integer o1, Integer o2) { // return o2-o1;//降序 // } // }); //匿名内部类简化后 // Arrays.sort(arr,(Integer o1, Integer o2)->{ // return o2-o1;//降序 // }); //匿名内部类最终简化后 Arrays.sort(arr, (o1, o2) -> o2 - o1); System.out.println(Arrays.toString(arr)); 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("点我了")); win.setSize(500, 400); win.add(btn); win.setVisible(true); } }
上一篇:
IDEA上Java项目控制台中文乱码