- Java 11 教程
- Java 11 - 主页
- Java 11 - 概述
- Java 11 - 环境设置
- Java 11 - 标准 HttpClient
- Java 11 - 编译免费启动
- Java 11 - 字符串 API
- Java 11 - 集合到数组
- Java 11 - 文件 API
- Java 11 - 可选类
- Java 11 - 非谓词
- Java 11 - lambda 中的 var
- Java 11 - 基于 Nest 的访问
- Java 11 - 删除/弃用的 API
- Java其他版本教程
- Java教程
- Java 8 教程
- Java 9 教程
- Java 10 教程
- Java 12 教程
- Java 13 教程
- Java 14 教程
- Java 15 教程
- Java 16 教程
- Java 11 有用资源
- Java 11 - 快速指南
- Java 11 - 有用的资源
- Java 11 - 讨论
Java 11 - Lambda 中的 Var
Java 11 允许在 lambda 表达式中使用 var,并且可用于将修饰符应用于局部变量。
(@NonNull var value1, @Nullable var value2) -> value1 + value2
考虑以下示例 -
ApiTester.java
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @interface NonNull {} public class APITester { public static void main(String[] args) { List<String> tutorialsList = Arrays.asList("Java", "HTML"); String tutorials = tutorialsList.stream() .map((@NonNull var tutorial) -> tutorial.toUpperCase()) .collect(Collectors.joining(", ")); System.out.println(tutorials); } }
输出
Java HTML
局限性
在 lambda 表达式中使用 var 有一定的限制。
var 参数不能与其他参数混合。以下将抛出编译错误。
(var v1, v2) -> v1 + v2
var 参数不能与其他类型参数混合。以下将抛出编译错误。
(var v1, String v2) -> v1 + v2
var 参数只能与括号一起使用。以下将抛出编译错误。
var v1 -> v1.toLowerCase()