为什么我们可以使用’this’作为实例方法参数?

什么是Java中的receiver参数? Java 8语言规范谈到了this

JLS提供了一个提示 :

无论哪种方式,接收器参数仅存在以允许在源代码中表示所表示的对象的类型,从而可以注释该类型。

这两种方法是等效的:

 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 {} 

Receiver参数允许传递参数并从这些参数中提取其他信息。 明确写入接收器的唯一目的是使注释接收器的类型成为可能。 现在,如果实现AnnotatedElement接口,则可以调用类的getAnnotation()方法来获取注释类型。 有关更多信息,请阅读此内容 。