最近from this question据我了解,下面似乎是合法的Java:Java:使用“this”作为实例方法的参数/参数名称?
class Bar {
void foo(Bar this) {}
}
现在,我试图找到其中的Java标准它说,你被允许这样做,看着here,但我找不到该部分。
有人可以引用它允许这种形式的方法声明以及声明名为this
的参数的限制是什么?
最近from this question据我了解,下面似乎是合法的Java:Java:使用“this”作为实例方法的参数/参数名称?
class Bar {
void foo(Bar this) {}
}
现在,我试图找到其中的Java标准它说,你被允许这样做,看着here,但我找不到该部分。
有人可以引用它允许这种形式的方法声明以及声明名为this
的参数的限制是什么?
它适用于1.8或更高版本的JDK。
接收机参数是一个实例方法或内部类的构造可选句法设备。对于实例方法,receiver参数表示调用该方法的对象。对于内部类的构造函数,receiver参数表示新构造对象的立即封闭实例。无论采用哪种方式,接收者参数都只存在于允许表示对象的类型在源代码中表示,以便该类型可能被注释。
如果你读你会发现下面的小鬼注解的全部要点,
当一个接收机参数是允许的,其类型和名称具体如下:
在实例方法中,接收者参数的类型必须是声明方法的 类或接口,并且名称为 接收器参数必须是这个;否则,发生编译时错误 。
在一个内部类的构造函数,该接收器参数 的类型必须是类或接口,其是内部类的立即封闭 类型声明,并且接收机 参数的名称必须是标识符。这里标识符是简单的 类或接口的名称,它是立即包含内部类的 类型声明;否则,发生编译时错误 。
这很酷。因为我知道我试图想出这个“JLS”背景;但我最初的懒惰尝试失败。感谢你,我现在知道! – GhostCat