TSL语言基础 > Object TSL > 类信息

FindClass    

简述
输入一个参数时,根据类名找到当前的类,返回找到类的指针,不是指向实例对象。
输入两个参数时,得到强制类型的对象:FindClass(“abcd”,aObject),返回强制对象aObject为abcd类。

与CLASS关键字不同,当不存在指定的类的时候,或者不是指定对象的父类时,并不抛出异常,而是返回一个整数0。

定义
FindClass(className:String[,obj:object]):Class|object
参数
名称类型说明
ClassNameString类名
objComObj可选参数,实例对象
返回值类的指针,不是指向实例对象。
或得到强制类型的对象。
  • 范例

    范例01:通过查找类运行类方法
    示例:
    classA :=FindClass("A");
    classA指向了类A,可以通过ClassA调用A的共享方法。但是不能调用实例方法,因为ClassA没有指向实例对象。
    //有类:
    Type ClassA=class()
      class function fucA();
      begin
        return "ClassA";
      end;
    end;
    //调用:
    return findclass("ClassA").fucA();

    返回:ClassA

    范例02:将实例对象强制转成指定父类的实例
    //有父类:
    Type ClassA=class()
      function fuc();virtual;
      begin
        return "ClassA";
      end;
    end;
    //有子类:
    Type ClassB=class(ClassA)

      function fuc();virtual;
      begin
        return "ClassB";
      end;
    end;

    //调用:
    objb:=new ClassB();
    obj:= findclass("ClassA",objb);//将objb对象强制转换成ClassA的实例对象
    return obj.fuc();

    返回:ClassA
相关