Метаданные класса - это сведения об определениях классов, доступные из различных объектов метаклассов. Используйте объекты метакласса для получения информации без создания экземпляров класса. Метаданные позволяют осуществлять программный контроль классов. Каждый метакласс имеет свойства, методы и события, содержащие информацию о описываемом им классе или компоненте класса.
Все компоненты класса имеют связанный метакласс, доступ к которому осуществляется из meta.class объект. Например, создайте meta.class объект для matlab.mixin.Copyable класс:
mc = ?matlab.mixin.Copyable
mc =
class with properties:
Name: 'matlab.mixin.Copyable'
Description: 'Implement copy method for handle objects in MA...'
DetailedDescription: ''
Hidden: 0
Sealed: 0
Abstract: 1
Enumeration: 0
ConstructOnLoad: 1
HandleCompatible: 1
InferiorClasses: {0x1 cell}
ContainingPackage: [1x1 meta.package]
PropertyList: [0x1 meta.property]
MethodList: [19x1 meta.method]
EventList: [1x1 meta.event]
EnumerationMemberList: [0x1 meta.EnumeratedValue]
SuperclassList: [1x1 meta.class] meta содержит метаклассы, описывающие определение классов и компонентов классов. Имя класса указывает компонент, описанный метаклассом. Например, с каждым свойством класса связано свойство meta.property. Атрибуты, определенные для компонентов класса, соответствуют свойствам соответствующего объекта метакласса.
meta.package - Доступ из meta.class ContainingPackage собственность.
meta.class - Создать из имени класса или объекта класса с помощью metaclass функции или ? оператор.
meta.property - Доступ из meta.class PropertyList собственность.
meta.DynamicProperty - Получить от addprop способ.
meta.method - Доступ из meta.class MethodList собственность.
meta.event - Доступ из meta.class EventList собственность.
meta.EnumeratedValue - Доступ из meta.class EnumerationMemberListList собственность.
Невозможно создать метаклассы непосредственно путем вызова соответствующего конструктора класса. Создание объектов метакласса из экземпляров класса или из имени класса.
? - Возвращает ClassNamemeta.class для именованного класса. Использовать meta.class.fromName с именами классов, хранящимися в переменных в виде символов.
meta.class.fromName(' - возвращает значение ClassName')meta.class объект для именованного класса (meta.class.fromName является meta.class метод).
metaclass(obj) - возвращает объект метакласса для экземпляра класса (metaclass)
Создать meta.class объект из имени класса с помощью ? оператор:
mc = ?MyClass;
Создать meta.class объект из имени класса с помощью fromName способ:
mc = meta.class.fromName('MyClass');Создать meta.class объект из экземпляра класса
obj = MyClass; mc = metaclass(obj);
metaclass функция возвращает meta.class объект (то есть объект meta.class класс). Можно получить другие объекты метакласса (meta.property, meta.methodи так далее) из meta.class объект.
Примечание
Метакласс - это термин, используемый здесь для обозначения всех классов в meta пакет. meta.class является классом в meta пакет, экземпляры которого содержат информацию о классах MATLAB ®. Метаданные - это сведения о классах, содержащихся в метаклассах.
При изменении определения класса MATLAB перезагружает определение класса. Если экземпляры класса существуют, MATLAB обновляет эти объекты в соответствии с новым определением.
Однако MATLAB не обновляет существующие объекты метакласса до нового определения класса. При изменении определения класса, когда существуют объекты метакласса этого класса, MATLAB удаляет объекты метакласса и их дескрипторы становятся недействительными. После обновления класса необходимо создать новый объект метакласса.
Сведения об изменении и перезагрузке классов см. в разделе Автоматическое обновление измененных классов.