AS3中的反射(速记) 分析

取类名: 传进一个object,返回类的全名

var loader:URLLoader = new URLLoader( );
var className:String = getQualifiedClassName(loader);
trace(className); // Displays flash.net.URLLoader

取父类的类名:传进一个object,返回父类的类名

var loader:URLLoader = new URLLoader( );
var className:String = getQualifiedSuperclassName(loader);
trace(className); // Displays flash.events.EventDispatcher

根据类名取类

var classReference:Class = Class(getDefinitionByName("flash.net.URLLoader"));
//一但你得到了类的引用后,就可以这样
var instance:Object = new classReference( );

getQualifiedClassName( ) 或 getQualifiedSuperclassName( ) 与 getDefinitionByName() 结合使用的例子:

var loader:URLLoader = new URLLoader( );
var className:String = getQualifiedClassName(loader);
var classReference:Class = Class(getDefinitionByName(className));
var instance:Object = new classReference( );

Introspection:describeType( )返回对象的类型描述

例如:

var loader:URLLoader = new URLLoader( );
var description:XML = describeType(loader);
trace(description);

输出:

<type name="flash.net::URLLoader" base="flash.events::EventDispatcher"
isDynamic="false" isFinal="false" isStatic="false">
<metadata name="Event">
<arg key="name" value="httpStatus"/>
<arg key="type" value="flash.events.HTTPStatusEvent"/>
</metadata>
<metadata name="Event">
<arg key="name" value="securityError"/>
<arg key="type" value="flash.events.SecurityErrorEvent"/>
</metadata>
<metadata name="Event">
<arg key="name" value="ioError"/>
<arg key="type" value="flash.events.IOErrorEvent"/>
</metadata>
<metadata name="Event">
<arg key="name" value="progress"/>
<arg key="type" value="flash.events.ProgressEvent"/>
</metadata>
<metadata name="Event">
<arg key="name" value="complete"/>
<arg key="type" value="flash.events.Event"/>
</metadata>
<metadata name="Event">
<arg key="name" value="open"/>
<arg key="type" value="flash.events.Event"/>
</metadata>
<extendsClass type="flash.events::EventDispatcher"/>
<extendsClass type="Object"/>
<implementsInterface type="flash.events::IEventDispatcher"/>
<constructor>
<parameter index="1" type="flash.net::URLRequest" optional="true"/>
</constructor>
<variable name="bytesTotal" type="uint"/>
<variable name="data" type="*"/>
<method name="load" declaredBy="flash.net::URLLoader" returnType="void">
<parameter index="1" type="flash.net::URLRequest" optional="false"/>
</method>
<method name="close" declaredBy="flash.net::URLLoader" returnType="void"/>
<variable name="dataFormat" type="String"/>
<variable name="bytesLoaded" type="uint"/>
<method name="dispatchEvent" declaredBy="flash.events::EventDispatcher"
returnType="Boolean">
<parameter index="1" type="flash.events::Event" optional="false"/>
</method>
<method name="toString" declaredBy="flash.events::EventDispatcher"
returnType="String"/>

(0)

相关推荐

  • AS3中的反射(速记) 分析

    取类名: 传进一个object,返回类的全名 var loader:URLLoader = new URLLoader( ); var className:String = getQualifiedClassName(loader); trace(className); // Displays flash.net.URLLoader 取父类的类名:传进一个object,返回父类的类名 var loader:URLLoader = new URLLoader( ); var className:S

  • 详解Java中的反射机制和动态代理

    一.反射概述 反射机制指的是Java在运行时候有一种自观的能力,能够了解自身的情况为下一步做准备,其想表达的意思就是:在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的功能就称为java语言的反射机制.通俗点讲,通过反射,该类对我们来说是完全透明的,想要获取任何东西都可以,这是一种动态获取类的信息以及动态调用对象方法的能力. 想要使用反射机制,就必须要先获取到该类

  • java中的反射及其优点说明

    目录 java反射及优点 java反射机制(Reflection) 1.什么是反射?反射有什么作用? 2.反射相关的主要API 3.什么是Class类 4.调用运行时类的指定结构 java反射及优点 反射是java的一大特性,而且是有些框架实现了IoC/DI的原理,本文就来探讨下java中的反射及其优点. 首先是普通的java静态类加载,java静态类是通过new实现的,在编译时刻就要加载所有可能用到的类,这样实际上存在一些缺点的,比如只要有一个类没有找到或者出现重大的问题编译便不会通过,导致其

  • Java中注解与原理分析详解

    目录 一.注解基础 二.注解原理 三.常用注解 1.JDK注解 2.Lombok注解 四.自定义注解 1.同步控制 2.类型引擎 一.注解基础 注解即标注与解析,在Java的代码工程中,注解的使用几乎是无处不在,甚至多到被忽视: 无论是在JDK源码或者框架组件,都在使用注解能力完成各种识别和解析动作:在对系统功能封装时,也会依赖注解能力简化各种逻辑的重复实现: 基础接口 在Annotation的源码注释中有说明:所有的注解类型都需要继承该公共接口,本质上看注解是接口,但是代码并没有显式声明继承关

  • C/C++的浮点数在内存中的存储方式分析及实例

    C/C++的浮点数在内存中的存储方式分析 任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100.则在Intel CPU架构的系统中,存放方式为  10000100(低地址单元) 00000100(高地址单元),因为Intel CPU的架构是小端模式.但是对于浮点数在内存是如何存储的?目前所有的C/C++编译器都是采用IEEE所制定的标准浮点格式,即二进制科学表示法. 在二进制科学表示法中,S=M*2^N 主要由三部分构成

  • 实例讲解Java编程中数组反射的使用方法

    什么是反射 "反射(Reflection)能够让运行于JVM中的程序检测和修改运行时的行为."这个概念常常会和内省(Introspection)混淆,以下是这两个术语在Wikipedia中的解释: 内省用于在运行时检测某个对象的类型和其包含的属性: 反射用于在运行时检测和修改某个对象的结构及其行为. 从它们的定义可以看出,内省是反射的一个子集.有些语言支持内省,但并不支持反射,如C++. 内省示例:instanceof 运算符用于检测某个对象是否属于特定的类. if (obj inst

  • Java中的反射机制详解

    Java中的反射机制详解 反射,当时经常听他们说,自己也看过一些资料,也可能在设计模式中使用过,但是感觉对它没有一个较深入的了解,这次重新学习了一下,感觉还行吧! 一,先看一下反射的概念: 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义. 反射是Java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接.但是反射使用不当会成本很高! 看概念很晕的,继续往下

  • java中利用反射调用另一类的private方法的简单实例

    我们知道,Java应用程序不能访问持久化类的private方法,但Hibernate没有这个限制,它能够访问各种级别的方法,如private, default, protected, public. Hibernate是如何实现该功能的呢?答案是利用JAVA的反射机制,如下: import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class ReflectDemo {

  • Go语言中使用反射的方法

    本文实例讲述了Go语言中使用反射的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: // Data Model type Dish struct {   Id  int   Name string   Origin string   Query func() } 创建实例如下: 复制代码 代码如下: shabushabu = Dish.new shabushabu.instance_variables # => [] shabushabu.name = "Shabu-S

  • dotNet中的反射用法入门教程

    本文实例讲述了dotNet中的反射用法.分享给大家供大家参考,具体如下: 参考MSDN: ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpguide/html/cpcondiscoveringtypeinformationatruntime.htm 提纲: 1. 什么是反射 2. 命名空间与装配件的关系 3. 运行期得到类型信息有什么用 4. 如何使用反射获取类型 5. 如何根据类型来动态创建对象 6. 如何获取方法以及动态调用方法 7. 动态创

随机推荐