Java:使用“this”作为实例方法的参数/参数名称?

最近从这个问题我得知以下似乎是合法的java:

class Bar { void foo(Bar this) {} } 

现在,我试图找到java标准中的哪个位置,它表示你可以这样做,并且看了一下,但我找不到该部分。

有人可以引用它允许这种forms的方法声明的地方,以及声明一个名为this的参数的限制是什么?

它适用于1.8或以上的JDK版本。

以下是JLS的说法

receiver参数是实例方法或内部类构造函数的可选语法设备。 对于实例方法,receiver参数表示调用该方法的对象。 对于内部类的构造函数,receiver参数表示新构造的对象的直接封闭实例。 无论哪种方式,接收器参数仅存在以允许在源代码中表示所表示的对象的类型,从而可以注释该类型。

如果您阅读了完整的要点,则可以找到以下注释,

如果允许接收器参数,则其类型和名称指定如下:

  • 在实例方法中,receiver参数的类型必须是声明方法的类或接口,receiver参数的名称必须是this; 否则,发生编译时错误。

  • 在内部类的构造函数中,receiver参数的类型必须是类或接口,它是内部类的直接封闭类型声明,接收器参数的名称必须是Identifier。 这里标识符是类或接口的简单名称,它是内部类的直接封闭类型声明; 否则,发生编译时错误。