注释文档@proxy
说明:
如果一个类被注释了
@proxy
,或者它实现了任何被注释的类,那么这个类被认为实现了关于静态类型分析的任何接口和任何成员。因此,将对象分配给任何类型的变量都不是静态类型警告,访问对象的任何成员也不是静态类型警告。
但是,给定以下代码:
import 'dart:mirrors';
@proxy
class ObjectProxy{
final InstanceMirror _mirror;
ObjectProxy(Object o): _mirror = reflect(o);
@override
noSuchMethod(Invocation invocation){
print('entered ${invocation.memberName}');
var r = _mirror.delegate(invocation);
print('returning from ${invocation.memberName} with $r');
return r;
}
}
class ClassA{
int k;
ClassA(this.k);
}
void printK(ClassA a) => print(a.k);
main() {
ClassA a = new ObjectProxy(new ClassA(1)); //annoying
printK(a);
}
飞镖编辑器警告
A value of type 'ObjectProxy' cannot be assigned to a variable of type 'ClassA'.
代码在未检查模式下按预期执行,但警告很烦人,据我所知,抑制该警告是@proxy
标签唯一应该做的事情。
我是否误解了@proxy
标签的用法,或者这是飞镖编辑器/分析器的错误?