如何在 Java 中将 this 和 super 关键字与 lambda 表达式一起使用?
在 lambda 表达式中,“this”和“super”引用与在封闭环境中的引用相同。由于 lambda 表达式未定义新作用域,因此 lambda 表达式中的“this”关键字表示 lambda 表达式所在的 method 的“this”参数。
在以下示例中,this.toString() 会调用 LambdaTest 对象的 toString() 方法,而不是调用 Operate 实例的 toString() 方法。
示例
@FunctionalInterface
interface Operate {
int func(int num1, int num2);
public String toString();
}
public class LambdaTest {
public static void main(String[] args) {
LambdaTest test = new LambdaTest();
test.getResult();
}
public void getResult() {
Operate op = (num1, num2) -> { // lambda expression
System.out.println("This hashcode: " + this.hashCode());
System.out.println("Calling toString(): "+ this.toString());
return num1 + num2;
};
System.out.println("Result is: "+ funcInt.func(10, 7));
}
@Override
public String toString() {
System.out.println("Super hashcode: " + super.hashCode());
return Integer.toString(super.hashCode());
}
}输出
This hashcode: 142257191 Super hashcode: 142257191 Calling toString(): 142257191 Result is: 17
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP