java讲义(匿名内部类 lambda表达式)

匿名内部类:适合创建只需要使用一次的类,如果需要重复使用,将实现类定义成一个独立的类

new 实现接口(){

  匿名内部类的类体部分

}

例子

接口:

public interface A {
    void test();
}

主函数:

public class niming {
    public static void main(String args[]){
        int age=8;
        A a=new A(){
            public void test(){
                System.out.println(age);
            }
        };
        a.test();
    }
}

Lambda表达式:主要作用代替匿名内部类的繁琐语法

Eatable接口

interface Eatable {
    void taste();
}

Flyable接口

public interface Flyable {
    void fly(String weather);
}

Addable接口

public interface AddAble {
    int add(int a,int b);
}

主类:

public class Lamna {
    public void eat(Eatable eatable){
        System.out.println(eatable);
        eatable.taste();
    }
    public void drive(Flyable f){
        System.out.println("我在驾驶:"+f);
        f.fly("天气晴朗");
    }
    public void test(AddAble addAble){
        System.out.println("2与3的和是"+addAble.add(2,3));
    }
    public static void main(String args[]){
        Lamna lamna=new Lamna();
        //lambad表达式
        lamna.eat(()-> System.out.println("吃东西"));
        //匿名内部类
        Eatable eatable=new Eatable() {
            @Override
            public void taste() {
                System.out.println("吃东西2");
            }
        };
        lamna.eat(eatable);
        //带一个参数的lambda表达式
        lamna.drive(weather->{
            System.out.print("今天的天气"+weather);
            System.out.println("直升机飞行平稳");
        });
        //匿名内部类
        Flyable flyable=new Flyable() {
            @Override
            public void fly(String weather) {
                System.out.print("今天的天气2"+weather);
                System.out.println("直升机飞行平稳2");
            }
        };
        lamna.drive(flyable);
        //带两个参数的lambda表达式
        lamna.test((a,b)->a+b);
        //匿名内部类
        AddAble addAble=new AddAble() {
            @Override
            public int add(int a, int b) {
                return a+b;
            }
        };
        lamna.test(addAble);
    }
}

带一个参数的那个 没太懂参数的传递问题?

运行结果:

javajiangyi.Lamna$$Lambda$1/1023892928@7cca494b
吃东西
javajiangyi.Lamna$1@7ba4f24f
吃东西2
我在驾驶:javajiangyi.Lamna$$Lambda$2/1989780873@58372a00
今天的天气天气晴朗直升机飞行平稳
我在驾驶:javajiangyi.Lamna$2@4dd8dc3
今天的天气天气晴朗直升机飞行平稳2
2与3的和是5
2与3的和是5


猜你喜欢

转载自blog.csdn.net/hewenjing8168/article/details/80866307