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);
}

 

posted @ 2022-06-10 17:51  藤原豆腐渣渣  阅读(28)  评论(0编辑  收藏  举报