Java_Lambda

匿名内部类与Lambda

匿名内部类:必须基于抽象类或接口,主要目的是减少程序中类的定义

interface IMessage{  
    public void print(String info); 
}

public class Hello{
    public static void main(String[] args) {
        IMessage msg = new IMessage() { //匿名内部类
            @Override
            public void print(String info) {
                System.out.println(info);
            }
        };        
        msg.print("Hello");
    }    
}

Lambda可以实现更简单的匿名内部类的使用

两种方法体:

(参数) -> 程序执行的语句;

(参数) -> {多行程序执行的语句};

(参数) ->  表达式;

interface IMessage{  
    public void print(String info); 
}

public class Hello{
    public static void main(String[] args) {
        IMessage msg = (info) -> System.out.println(info);    
        msg.print("Hello");
    }    
}
interface IMath{  
    public int add(int x,int y); 
}

public class Hello{
    public static void main(String[] args) {
        IMath msg = (i, j) -> {
            int result = i + j;
            System.out.println(i);
            System.out.println(j);
            System.out.println(result);
            return result;
        };
        System.out.println(msg.add(10, 20));
    }    
}
interface IMath{  
    public int add(int x,int y); 
}

public class Hello{
    public static void main(String[] args) {
        IMath msg = (i, j) -> i + j; //没有return
        System.out.println(msg.add(10, 20));
    }    
}
原文地址:https://www.cnblogs.com/lonske/p/8797566.html