10、匿名内部类实现接口,lambda表达式实现函数式接口

来源:互联网 发布:simpson算法流程图 编辑:程序博客网 时间:2024/06/15 18:05

匿名内部类可以实现一个接口的对象,注意是接口的对象,直接实现接口的抽象方法(所有),然后使用,因为没有经过“类”这一环节,所以叫匿名类,即认为这一对象属于某个不具名的类,这样的过程自然就不能用这个“不具名的类”再产生其他对象,故只能产生这一个对象


函数式接口,首先是一个接口,然后接口里只有一个抽象方法,其他随意,抽象方法只能有一个。

这时可以用lambda表达式来创建函数式接口,lambda表达式负责实现那个唯一的抽象方法。

package Chapter6;interface FuncInter{int Function(int[] args);}public class InterLambda {public int Proc(int[] args,FuncInter Func){return Func.Function(args);}public static void main(String[] args){int[] arry = {1,5,9};//匿名内部类先创建对象再实现FuncInter f = new FuncInter() {@Overridepublic int Function(int[] args) {// TODO Auto-generated method stub                int sum = 0;                for(int temp : args)                {                sum += temp;                }return sum;}};System.out.println(new InterLambda().Proc(arry, f));//匿名内部类直接实现System.out.println(new InterLambda().Proc(arry, new FuncInter() {@Overridepublic int Function(int[] args) {// TODO Auto-generated method stub                int sum = 0;                for(int temp : args)                {                sum += temp;                }return sum;}}));//lambda表达式直接实现System.out.println(new InterLambda().Proc(arry, (int[] as) ->{                                                                int sum = 0;                                                                    for(int temp : as)                                                                    {                                                                    sum += temp;                                                                    }                                                                    return sum;                                                              })                    );//先用Lambda表达式创建一个函数式接口的实例,再调用FuncInter ff = (int[] as) ->{            int sum = 0;            for(int temp : as)            {            sum += temp;            }            return sum;        };        System.out.println(new InterLambda().Proc(arry, ff));}}

注意,从接口中的抽象方法,到类方法的实现,再到lambda表达式,返回值要统一

0 0
原创粉丝点击