proxy = const _Proxy()

注解@proxy将标记一个类作为实现的成员,动态地通过noSuchMethod

该注解适用于任何类。它通过父类和接口被继承。

如果类被标注为@proxy,或它实现了任何被标注的类, 那么这个类的任何成员将被认为实现了静态类型分析。 因此,访问任何类未实现的对象的成员,或使用与声明不同数量的参数调用方法时, 产生的并不是一个静态类型警告。

注解并不会改变被标注的类的实现,如果将未实现的静态类型对象分配给变量, 并不会阻止静态警告。

禁止警告只会影响成员访问的静态类型警告。 对象的运行时类型不受影响。 它并不是实现了任何特殊的接口,因此在Checked模式中, 将它分配给一个类型的变量可能会失败。 使用is操作符对类型进行测试时,将只返回true,它实际上是implements或extends。 通常,访问一个未被类实现的成员会使noSuchMethod方法被调用, @proxy注解只是意向处理(一些)noSuchMethod使调用更加优雅。

被标记为@proxy的类应该重写Object声明的noSuchMethod方法。

@proxy的目的是在编译时,创建一个或多个未知类型对象。 如果在编译时类型可知,类可以编写那些类型的实现。