在 Java 11 的 Lambda 表达式中使用var
原文:https://www.studytonight.com/java-11/using-var-in-lambda-expression-java-11
var 是 Java 中的一个关键字,用来声明一个局部变量。它是在 Java 10 中引入的,用于改进 Java 中的类型推断。
在 Java 11 中,我们可以使用带有 lambda 表达式参数的 var 来避免使用带有变量名的类型名。在早期版本的 Java 中,当使用 lambda 表达式时,var
关键字是不允许的,但是现在我们可以使用它。
我们举个例子来理解一下。在 Java 11 之前,lambda 表达式可能有也可能没有变量类型。意思是,我们可以用 type ( int
、float
等),带变量,也可以跳过。
举例时间:
这是一个简单的例子,其中我们有一个带有两个参数的 lambda 表达式,并且没有提到类型(跳过的类型)。这意味着,编译器推断参数的类型。
interface Cal{
int sum(int a, int b);
}
public class Main {
public static void main(String[] args){
Cal cal = (a, b)-> a+b;
int result = cal.sum(10, 20);
System.out.println(result);
}
}
30
这个例子适用于 Java 8 和更高版本。
例 2:
这是另一个例子,其中我们提到了参数的类型(int
)。这两个例子执行良好,并产生了预期的结果。
interface Cal{
int sum(int a, int b);
}
public class Main {
public static void main(String[] args){
Cal cal = (int a, int b)-> a+b;
int result = cal.sum(10, 20);
System.out.println(result);
}
}
30
示例 3:用 Java 11 var
关键字
在这个例子中,我们在 lambda 表达式中使用了var
,在前面的例子中我们使用了 int 类型。这仅允许在 Java 11 中使用,如果您在早期版本的 Java 中执行这段代码,编译器会报告一个错误。因此,使用 Java 11 执行这段代码,代码会执行得很好。
interface Cal{
int sum(int a, int b);
}
public class Main {
public static void main(String[] args){
Cal cal = (var a, var b)-> a+b;
int result = cal.sum(10, 20);
System.out.println(result);
}
}
Thirty
需要记住的要点:
将var
与 lambda 表达式一起使用时,请确保牢记以下场景和规则。
(var s1, s2) -> s1 + s2 //no skipping allowed
(var s1, String y) -> s1 + y //no mixing allowed
var s1 -> s1 //not allowed. Need parentheses if you use var in lambda.
如果有多个参数,则使用所有参数的变量。不允许跳过。
如果一个参数使用 var ,那么其他参数必须使用 var 而不是其他类型,如 int 、 float 等。
在参数中使用变量时,必须使用括号
()
。