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