metadata最先开始于dotnet吧,叫做Attribute;然后java也紧随其后,叫做Annotaion;actionscript则叫做Metadata。其中dotnet与ActionScript的语法格式上都是相似的,如AS中的[Bindable]。在Java中则是用@XXX这样的语法,如@override。不过目的都是一个,给类或方法或属性增加meta data标记,从而实现对这些被标记的代码进行一些特殊处理。譬如FlexUnit4, 不再要求从测试用例中的测试方法必须以test开头,而是在方法之前用[Test]进行标记。这个跟JUnit 4是一致的,因为FlexUnit4应该是参考了JUnit的。在dotnet中可以有如下的例子(该例子引自http://ondotnet.com/pub/a/dotnet/excerpt/prog_csharp_ch18/index.html?page=4 , 该文章是一篇很好的关于介绍dotnet Attribute的文章)
Java中的Annotation类似dotnet,你可以在这里 找到关于Annotation的例子,这个例子很能帮助你理解测试框架中用到的Test Metadata。
从以上可以看出metadata通常都与reflection紧密相连。在AS中亦是如此,不同的是在AS中并不像dotnet和java一样需要事先定义一个metadata相关的类。AS中通过解析flash.utils.describeType来获取metadata信息,而这也是reflection的一部分。一下我们给出一个代码片段,该代码源自http://www.quietlyscheming.com/blog/components/a-couple-of-samples-from-max-no-not-that-one/
在UI_Code中引用了Bind和HandleEvent两个metadata标记。并且在构造函数中调用了ASBinder.InitObject(this)从而解析这些metadata标记。这些标记中引用的source或者destination中对应的都是UIExample中的控件。