【问题标题】:Why can we use 'this' as an instance method parameter?为什么我们可以使用 'this' 作为实例方法参数?
【发布时间】:2014-06-18 16:50:50
【问题描述】:

什么是 Java 中的接收器参数? Java 8 语言规范谈到this

【问题讨论】:

标签: java parameters java-8 this


【解决方案1】:

JLS 给a hint:

无论哪种方式,receiver 参数的存在只是为了允许在源代码中表示所表示对象的类型,以便可以对类型进行注释。

这两种方法是等价的:

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

【讨论】:

【解决方案2】:

接收器参数允许传递参数并从这些参数中提取附加信息。显式编写接收器的唯一目的是使注释接收器的类型成为可能。现在,如果你实现了AnnotatedElement 接口,你可以调用你的类的getAnnotation() 方法来获取一个注解类型。 更多信息,您可以阅读this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2015-08-09
    相关资源
    最近更新 更多