java--lambda表达式
Posted zhou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java--lambda表达式相关的知识,希望对你有一定的参考价值。
lambda表达式是java8的新特性,可以被看作 使用精简语法的 内部类。
基础语法
(parameters) -> expression
或
(parameters) ->{ statements; }
无参数无返回值 lambda:
import java.io.*; public class Test { public static void main(String[] args) { Person p = () -> {System.out.println("带大括号"); }; p.say(); Person p1 = () -> System.out.println("不带大括号"); //省略大括号的前提:只有一行语句,如果是表达式,会被执行返回结果,消除(省略)return p1.say(); } } /** *使用 lambda 表达式前提: * 1.必须是函数式接口(有且只有一个 抽象方法) * 2.可以有常量 */ interface Person { //int num = 12; void say(); }
无参数有返回值 lambda:
import java.io.*; public class Test { public static void main(String[] args) { Person p = () -> {return "带括号返回值"; }; System.out.println(p.say()); Person p1 = () -> "不带大括号返回值"; //省略大括号前提是:只有一行语句,如果是表达式,执行返回结果,消除(省略)return System.out.println(p1.say()); } } /** *使用 lambda 表达式前提: * 1.必须是函数式接口(有且只有一个 抽象方法) */ interface Person { String say(); }
有参数有返回值 lambda:
import java.io.*; public class Test { public static void main(String[] args) { Person p1 = (String s) -> {return "声明类型+带括号" + s; }; System.out.println(p1.say("hello")); Person p2 = (s) -> "省略声明类型" +s; System.out.println(p2.say("hello")); Person p3 = s -> "省略声明类型+省略括号" + s; System.out.println(p3.say("hello")); } } /** *使用 lambda 表达式前提: * 1.必须是函数式接口(有且只有一个 抽象方法) */ interface Person { String say(String s); }
变量作用域
可以引用 类常量、局部常量、接口常量,但是不能修改
import java.io.*; public class Test { final static String str1 = "str1:标记final外层 类变量;"; static String str2 = "str2:可以省略final,隐性具有final含义;"; public static void main(String[] args) { final String str3 = "str3:局部变量。"; Person p = () -> System.out.println(str1 + str2 + str3 + Person.str4); p.say(); } } interface Person { String str4 = "str4:接口变量"; // 隐性final void say(); }
如果尝试对str4修改,报错:
error: cannot assign a value to final variable str4
以上是关于java--lambda表达式的主要内容,如果未能解决你的问题,请参考以下文章