Java中的receiver
参数是什么? Java 8语言规范讨论this
。
答案 0 :(得分:28)
JLS提供a hint:
无论哪种方式,接收器参数仅用于允许在源代码中表示所表示对象的类型,以便可以对该类型进行注释。
这两种方法是等价的:
class Test {
void m1() { }
void m2(Test this) { }
}
但后者允许您添加注释:
void m2(@MyAnnotation Test this) { }
//where MyAnnotation can be defined like this for example:
@Target(ElementType.TYPE_USE) @interface MyAnnotation {}
答案 1 :(得分:7)
Receiver参数允许传递参数并从这些参数中提取其他信息。明确写入接收器的唯一目的是使注释接收器的类型成为可能。现在,如果实现AnnotatedElement接口,则可以调用类的getAnnotation()方法来获取注释类型。 有关详细信息,请参阅this。