java8新特性

1.函数式编程
函数式编程是指可以传入函数作为方法的参数。先看看lambda 表达式 :

(int a,int b) -> a + b

上述表达式返回一个类型为函数式接口的引用

MathOperation add = (int a,int b) -> a + b;

IntAdd 即为一个函数式接口,它的定义如下:

interface MathOperation {
    int operate(int a,int b);
}

lambda 表达式会去接口中找参数个数相同,类型一样的方法匹配,函数接口的定义必须是单一方法。可见lambda 表达式的参数类型可以省略,但要么所有参数类型都省略要么都不省略,不能部分省略。一般可以用@FunctionalInterface表明一个接口是函数式接口(可省略)。
那么这个方法完整就可以这么实现:

package functionProgram;

public class TestJava8 {

    public static void main(String[] args) {
        //lambda 表达式    函数引用
        MathOperation add = (int a,int b) -> a + b;
                MathOperation sub = ( a, b) -> a - b;

              System.out.println(op(1,2,add));
              System.out.println(op(1,2,sub));
    }
    
    @FunctionalInterface
    interface MathOperation {
        int operate(int a,int b);
    }
        private static int op(int a, int b, MathOperation mathOperation){
          return mathOperation.operate(a, b);
    }
}

那么java中的匿名类和函数式编程有什么区别呢?

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容