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