注解@proxy
将标记一个类作为实现的成员,动态地通过noSuchMethod
。
该注解适用于任何类。它通过父类和接口被继承。
如果类被标注为@proxy
,或它实现了任何被标注的类,
那么这个类的任何成员将被认为实现了静态类型分析。
因此,访问任何类未实现的对象的成员,或使用与声明不同数量的参数调用方法时,
产生的并不是一个静态类型警告。
注解并不会改变被标注的类的实现,如果将未实现的静态类型对象分配给变量, 并不会阻止静态警告。
禁止警告只会影响成员访问的静态类型警告。
对象的运行时类型不受影响。
它并不是实现了任何特殊的接口,因此在Checked模式中,
将它分配给一个类型的变量可能会失败。
使用is
操作符对类型进行测试时,将只返回true,它实际上是implements或extends。
通常,访问一个未被类实现的成员会使noSuchMethod
方法被调用,
@proxy
注解只是意向处理(一些)noSuchMethod
使调用更加优雅。
被标记为@proxy
的类应该重写Object声明的noSuchMethod
方法。
@proxy
的目的是在编译时,创建一个或多个未知类型对象。
如果在编译时类型可知,类可以编写那些类型的实现。