Метаданные класса являются информацией об определениях классов, которая доступна от различных объектов метаклассов. Используйте объекты метакласса получить информацию, не имея необходимость создавать экземпляры класса. Метаданные включают программируемый контроль классов. Каждый метакласс имеет свойства, методы и события, которые содержат информацию о классе или компоненте класса, который это описывает.
Все компоненты класса имеют связанный метакласс, к которому вы получаете доступ от объекта meta.class
. Например, создайте объект meta.class
для matlab.mixin.Copyable
Класс 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. пакет
— доступ из свойства meta.class ContainingPackage
.
meta. класс
— Создает из имени класса или объекта класса с помощью функции метакласса
или?
оператор.
Свойство meta.
— доступ из свойства meta.class PropertyList
.
meta. DynamicProperty
— Получает из addprop
метода.
meta. метод
— доступ из свойства meta.class MethodList
.
Событие meta.
— доступ из свойства meta.class EventList
.
meta. EnumeratedValue
— доступ из свойства meta.class EnumerationMemberListList
.
Вы не можете инстанцировать метаклассов непосредственно путем вызова соответствующего конструктора класса. Создайте объекты метакласса из экземпляров класса или из имени класса.
Возвращает объект ClassName
meta.class
для именованного класса. Используйте meta.class.fromName
с именами классов, сохраненными как символы в переменных.
('Classname') метакласс.
— возвращает fromName
объект meta.class
для именованного класса (meta. класс. 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 удаляет объекты метакласса, и их указатели становятся недопустимыми. Необходимо создать новый объект метакласса после обновления класса.
Для получения информации о том, как изменить и перезагрузить классы, видит Автоматические обновления для Модифицированных классов.