1.概述
Class既是一个关键字,也是一个类。
大家在有的代码中可能会看到
public static function getClass(interfaceName:String):
Class(参见mx.core.Singleton.java)
注意,这里的返回值不是
Object ,而是Class。
本人查阅了相关资料,说得都不清楚,官方文献只是给出Class类继承于Object,本身没有定义任何属性和方法。
其实java中也有Class类这个概念,这个类本质是为了描述一个用户定义的类中存在哪些属性和方法,这种描述对虚拟器而言是极有用的。
一种虚拟器中首先会加载一个用户定义类的Class对象信息,再根据这个Class对象中的信息创建用户定义的对象。
2.获取Class对象信息
2.1直接用类名
用户定义的类的类名可以作为值,直接赋给Class对象
-
public class ClassA
{
public function ClassA()
{
}
public function seeA():String{
return "hello A";
}
}
-
-
//调用代码
-
var classToConstruct:Class;
-
classToConstruct=ClassA;
-
-
var t:ClassA =new classToConstruct();
-
Alert.show("t value:"+t.seeA());
2.2 通过对象获取Class信息
如果已获得了用户定义类的实例对象,则可通过该对象获取Class信息
-
var classToConstruct:Class;
-
-
var t:ClassA =new ClassA();//
-
classToConstruct=t["constructor"];
-
-
var s:ClassA =new classToConstruct();
-
Alert.show("s value:"+s.seeA());
2.3 通过字符串获取Class信息
通过
getDefinitionByName("类名")获取Class信息,注意,参数必须包含路径
-
var classToConstruct:Class=getDefinitionByName("com.sig.ClassA") as Class;
-
var s:ClassA =new classToConstruct();
-
Alert.show("s value:"+s.seeA());
动态生成对象的例子如下
-
var i=0;
-
var c:*=getDefinitionByName(“MyClass”+i);
-
var myClass:*=new c();
参考文献
1.class,
2.AS3动态获得类名及类的方法 .
阅读(1130) | 评论(0) | 转发(0) |