主要内容

类元数据

什么是类元数据?

类元数据是关于可以从各种元类对象中获得的类定义的信息。使用元类对象来获取信息,而不必创建类的实例。元数据支持以编程方式检查类。每个元类都有属性、方法和事件,这些属性、方法和事件包含了关于它描述的类或类组件的信息。

类的所有类组件都有一个相关的元类,您可以从meta.class对象。例如,创建meta.class对象的matlab.mixin.Copyable类:

mc = ? matlab.mixin.Copyable
mc = class with properties:在MA中实现句柄对象的复制方法DetailedDescription: " Hidden: 0 Sealed: 0 Abstract: 1 Enumeration: 0 ConstructOnLoad: 1 handlecomcompatible: 1 InferiorClasses: {0x1 cell} ContainingPackage: [1x1 meta。[0x1 meta. package] PropertyList: [0x1 meta. package]方法列表:[19x1 meta. properties]EventList: [1x1元。枚举成员列表:[0x1元。EnumeratedValue] SuperclassList: [1x1 meta.class]

元包

包包含描述类和类组件定义的元类。类名表示由元类描述的组件。例如,每个类属性都有一个元。与之相关的属性。为类组件定义的属性对应于相应元类对象中的属性。

元类对象

您不能通过调用相应的类构造函数来直接实例化元类。从类实例或从类名创建元类对象。

  • 类名称——返回一个meta.class对象的命名类。使用meta.class.fromName类名以字符形式存储在变量中。

  • meta.class.fromName ('类名称”)——返回meta.class对象的命名类(meta.class.fromName是一个meta.class方法)。

  • 元类(obj)-返回一个元类对象的类实例(元类

创建meta.class使用接线员:

mc = ? MyClass;

创建meta.class使用fromName方法:

mc = meta.class.fromName (“MyClass”);

创建meta.class来自类实例的对象

obj = MyClass;mc =元类(obj);

元类函数的作用是:返回meta.class对象(即对象的meta.class类)。您可以获得其他元类对象(meta.propertymeta.method,等等)meta.class对象。

请注意

元素中的所有类都是元类包中。meta.class是在上课吗包,它的实例包含MATLAB的信息®类。元数据是关于元类中包含的类的信息。

元类对象生命周期

当你改变一个类定义时,MATLAB会重新加载这个类定义。如果类的实例存在,MATLAB根据新的定义更新这些对象。

但是,MATLAB并没有将现有的元类对象更新为新的类定义。如果你改变一个类的定义,而这个类的元类对象存在,MATLAB删除元类对象和他们的句柄失效。您必须在更新类之后创建一个新的元类对象。

有关如何修改和重新加载类的信息,请参见修改类的自动更新

相关的话题