AS3自定义注解的声明与使用
2014-01-16 10:35
381 查看
JAVA注解是一个非常有用的机制,在不改变代码的情况下就可以轻松为成员增加注解从而实现注入等操作。其实在AS3中也存在这种机制,而且相比JAVA,使用上更为简单。
想要使用注解,首先需要了解下AS3的反射,网络上相关文章大把,这里不再多做陈,仅仅列举出一些方法。
getQualifiedClassName(value:*) ; 获得某个实例或者类对象的完全限定类名。 完全限定类名就是 类的包名 + :: + 类名,
比如 Sprite 类的完全限定类名就是 flash.display::Sprite
getDefinitionByName(value:*); 获得指定的类的类对象引用。 将类的限定名传入即可获得这个类对象
describeType(value:*); 生成一个描述指定对象或类型的描述,格式为XML 。
获取注解最多就使用以上的三个方法,方便吧!
而注解的实现用不需要单独写一个注解类来实现,你直接在现有的AS3代码中直接写一个不存在的的注解即可实现,需要附带参数时只需在注解名后面的括号内定义即可
这是一个AS3的自定义注解:
在程序入口处写下代码:
var xml:XML = describeType(Annotation);
trace(xml);
输出信息:
仔细查看就可以发现我们的注解就在字段描述的 metadata 下。 同理 你可以试一试方法的注解、静态成员的注解。 注意:静态成员的反射必须传入类对象。
想要使用注解,首先需要了解下AS3的反射,网络上相关文章大把,这里不再多做陈,仅仅列举出一些方法。
getQualifiedClassName(value:*) ; 获得某个实例或者类对象的完全限定类名。 完全限定类名就是 类的包名 + :: + 类名,
比如 Sprite 类的完全限定类名就是 flash.display::Sprite
getDefinitionByName(value:*); 获得指定的类的类对象引用。 将类的限定名传入即可获得这个类对象
describeType(value:*); 生成一个描述指定对象或类型的描述,格式为XML 。
获取注解最多就使用以上的三个方法,方便吧!
而注解的实现用不需要单独写一个注解类来实现,你直接在现有的AS3代码中直接写一个不存在的的注解即可实现,需要附带参数时只需在注解名后面的括号内定义即可
这是一个AS3的自定义注解:
package com { public class Annotation { private var _id:String; public function Annotation() { } [MyAnnotation(a=1,b=2)] public function get id():String { return _id; } public function set id(value:String):void { _id = value; } } }
在程序入口处写下代码:
var xml:XML = describeType(Annotation);
trace(xml);
输出信息:
<type name="com::Annotation" base="Class" isDynamic="true" isFinal="true" isStatic="true"> <extendsClass type="Class"/> <extendsClass type="Object"/> <accessor name="prototype" access="readonly" type="*" declaredBy="Class"/> <factory type="com::Annotation"> <extendsClass type="Object"/> <accessor name="id" access="readwrite" type="String" declaredBy="com::Annotation"> <metadata name="MyAnnotation"> <arg key="a" value="1"/> <arg key="b" value="2"/> </metadata> <metadata name="__go_to_definition_help"> <arg key="pos" value="177"/> </metadata> <metadata name="__go_to_definition_help"> <arg key="pos" value="240"/> </metadata> </accessor> <metadata name="__go_to_ctor_definition_help"> <arg key="pos" value="95"/> </metadata> <metadata name="__go_to_definition_help"> <arg key="pos" value="30"/> </metadata> </factory> </type>
仔细查看就可以发现我们的注解就在字段描述的 metadata 下。 同理 你可以试一试方法的注解、静态成员的注解。 注意:静态成员的反射必须传入类对象。
相关文章推荐
- java反射和自定义注解的使用实例
- javaSE_8系列博客——Java语言的特性(四)--注解--(5)-- 如何使用自定义的注解?
- 自定义注解与validation结合使用案例
- java元注解和自定义注解的使用方法
- 自定义注解的使用
- 注解及自定义注解的使用
- 在使用springMVC时,我使用了@Service这样的注解,发现使用注解@Transactional声明的事务不起作用
- springmvc 下使用自定义注解获取登录信息
- 使用注解和自定义验证实现Spring MVC表单验证(翻译)
- 使用注解实现自定义junit(简)
- Windows Workflow Beta2 HOL学习笔记(三):使用IfElse Activity,声明条件和自定义活动
- Java中自定义注解的使用
- 使用Spring Boot的AOP处理自定义注解
- 自定义注解和注解的相关使用
- Android 使用自定义注解代替重复写findViewById代码
- Java Annotation 注解的介绍和使用 自定义注解
- java自定义注解及注解使用
- 使用spring注解方式实现组件的声明,并且用注解注入方式解决依赖关系
- J2EE之java自定义注解在项目中的使用
- 日志--切面(AOP)的使用,以及配合使用自定义注解