Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3252465
  • 博文数量: 530
  • 博客积分: 13360
  • 博客等级: 上将
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-13 13:32
文章分类

全部博文(530)

文章存档

2017年(1)

2015年(2)

2013年(24)

2012年(20)

2011年(97)

2010年(240)

2009年(117)

2008年(12)

2007年(8)

2006年(9)

分类: Web开发

2013-03-27 12:31:22

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对象

  1.     public class ClassA
        {
            public function ClassA()
            {
            }
            
            public function seeA():String{
                return "hello A";
            }
        }      
  2.        
  3.     //调用代码
  4.     var classToConstruct:Class;
  5.     classToConstruct=ClassA;
  6.                 
  7.     var t:ClassA =new classToConstruct();
  8.      Alert.show("t value:"+t.seeA());
2.2 通过对象获取Class信息
      如果已获得了用户定义类的实例对象,则可通过该对象获取Class信息

  1.         var classToConstruct:Class;

  2.         var t:ClassA =new ClassA();//
  3.         classToConstruct=t["constructor"];
  4.        
  5.         var s:ClassA =new classToConstruct();
  6.         Alert.show("s value:"+s.seeA());

2.3 通过字符串获取Class信息
       通过getDefinitionByName("类名")获取Class信息,注意,参数必须包含路径

  1.         var classToConstruct:Class=getDefinitionByName("com.sig.ClassA") as Class;
  2.         var s:ClassA =new classToConstruct();
  3.         Alert.show("s value:"+s.seeA());
动态生成对象的例子如下

  1.         var i=0;
  2.         var c:*=getDefinitionByName(“MyClass”+i);
  3.         var myClass:*=new c();




参考文献
1.class,
2.AS3动态获得类名及类的方法 .
阅读(1077) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~