美文网首页
java8新特性

java8新特性

作者: kemir天明 | 来源:发表于2018-07-19 00:00 被阅读0次

    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中的匿名类和函数式编程有什么区别呢?

    相关文章

      网友评论

          本文标题:java8新特性

          本文链接:https://www.haomeiwen.com/subject/ydtzpftx.html