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

时间:2014-06-18 16:50:51

标签: java parameters java-8 this

Java中的receiver参数是什么? Java 8语言规范讨论this

2 个答案:

答案 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