Метаданные класса являются информацией об определениях классов, которая доступна от различных объектов метаклассов. Используйте объекты метакласса получить информацию, не имея необходимость создавать экземпляры класса. Метаданные включают программируемый контроль классов. Каждый метакласс имеет свойства, методы и события, которые содержат информацию о классе или компоненте класса, который это описывает.
Все компоненты класса имеют связанный метакласс, к которому вы получаете доступ от 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
свойство.
Вы не можете инстанцировать метаклассов непосредственно путем вызова соответствующего конструктора класса. Создайте объекты метакласса из экземпляров класса или из имени класса.
— Возвращает ClassName
meta.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 удаляет объекты метакласса, и их указатели становятся недопустимыми. Необходимо создать новый объект метакласса после обновления класса.
Для получения информации о том, как изменить и перезагрузить классы, видит Автоматические обновления для Модифицированных классов.