java lambda表达式
lambda表达式是JKD1.8提出的来的新特性。
lambda表达式用于简化Java中接口式的匿名内部类。
只含有一个抽象方法的接口,被称为“函数式接口”,这种接口可以隐式地转换成lambda表达式。
示例代码:
package com.seven.javaSE; import java.util.Arrays; import java.util.Comparator; public class LambdaDemo { public static void main(String[] args) { //多态方式的方式创建对象 IAction jay = new Person("jay",40); jay.eat("jay"); //匿名内部类方式创建对象 IAction kk = new IAction() { @Override public void eat(String name) { System.out.println(name+"想吃炸鸡"); } }; kk.eat("kk"); /* * 使用 lambda 表达式简化上述操作 * lanbda表达式的结构为 ()->{} * ()用来传递参数,只需写参数名,不能加参数类型 * {}用来存放实现接口方法的代码,若此代码只有一行,可去掉花括号 */ IAction jj = (name)->{System.out.println(name+"想吃辣条");}; jj.eat("本大爷"); //举一个对 Person类对象排序 的栗子 Person [] stus = {new Person("小王",8),new Person("小党",3),new Person("小苟",2)}; // Comparator<Person> comp_p= new Comparator<Person>() { // @Override // public int compare(Person o1,Person o2) { // return o1.getAge()-o2.getAge(); // } // }; // Arrays.sort(stus,comp_p); Arrays.sort(stus,(o1,o2)->{return o1.getAge()-o2.getAge();}); System.out.println(Arrays.toString(stus)); } } class Person implements IAction{ private String name; private int age; public Person(String name,int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public void eat(String name) { System.out.println(name+"想吃饭"); } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } } interface IAction{ public void eat(String name); }
本文来自博客园,作者:藤原豆腐渣渣,转载请注明原文链接:https://www.cnblogs.com/javafufeng/p/16364131.html