您的位置:首页 > 编程语言 > Java开发

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

2017-09-06 16:12 246 查看
环境: 环境变量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文件中对编译器的配置:
<build>
<finalName>spark.hadoop.study</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<showWarnings>true</showWarnings>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
核心是指定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表达式的返回值就是接口的实现类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: