IntelliJ Idea中使用Java8新特性lambda表达式

环境: 环境变量JAVA_HOME配置jdk1.8

idea配置支持lambda:

    File -> Project Structure -> Modules ->  Language level, 选择: 8-Lambdas, type annotations etc.

    File -> Project Structure -> Project  ->  Project language level, 选择: 8-Lambdas, type annotations etc.

pom文件中对编译器的配置:


    spark.hadoop.study
    
      
        org.apache.maven.plugins
        maven-compiler-plugin
        3.3
        
          1.8
          1.8
          true
          UTF-8
        
      
    
  

核心是指定source为1.8, 否则编译会报如下错误:

Fatal error compiling: 无效的目标发行版


用junit写的测试代码:

package com.sogou.baike;

import org.junit.Test;

/**
 * Created by denglinjie on 2017/9/6.
 */
public class LambdaTest {

    //所需接口
    interface MathOperation {
        int operate(int a, int b);
    }

    @Test
    public void testPlus() {
        // 不用类型声明
        MathOperation plus = (a, b) -> a + b;
        System.out.println(plus.operate(1, 2));
    }

    @Test
    public void testSub() {
        // 类型声明, 没有大括号以及返回语句
        MathOperation sub = (int a, int b) -> a - b;
        System.out.println(sub.operate(2, 1));
    }

    @Test
    public void testMulti() {
        // 用大括号及返回语句
        MathOperation multi = (int a, int b) -> {return a * b;};
        System.out.println(multi.operate(1, 2));
    }
}


上面三个测试案例分别应用了lambda表达式的三种不同使用方法
大致理解:用lambda表达式构造方法实体,等价于实现了接口中的方法,最终lambda表达式的返回值就是接口的实现类




你可能感兴趣的:(Java)