Java 8明确'this'参数

Cla*_*oft 2 java parameters this java-8

我最近听说自Java 8以来可以定义一个this在实例方法中调用的显式参数,如下所示:

public class Test
{
    public void test(Test this, int i) { System.out.println(i); }
}
Run Code Online (Sandbox Code Playgroud)

这种语法有什么用?

正如您在此截图(Eclipse,编译器兼容性Java 8)中可以清楚地看到的,这是有效的语法.

证明

Lui*_*oza 7

对于Java 7或更早版本,您不能将其this用作变量的名称,因为它是保留关键字.你可以做的是将this参数传递给一个方法:

class Test {
    public void foo(Test test, int i) {
        //...
    }
    public void foo(int i) {
        foo(this, i);
    }
}
Run Code Online (Sandbox Code Playgroud)

对于Java 8,请参阅为什么我们可以使用'this'作为实例方法参数?