Метаданные классов

Что такое Метаданные классов?

Метаданные класса являются информацией об определениях классов, которая доступна от различных объектов метаклассов. Используйте объекты метакласса получить информацию, не имея необходимость создавать экземпляры класса. Метаданные включают программируемый контроль классов. Каждый метакласс имеет свойства, методы и события, которые содержат информацию о классе или компоненте класса, который это описывает.

Все компоненты класса имеют связанный метакласс, к которому вы получаете доступ от объекта 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 содержит метаклассы, которые описывают определение компонентов класса и классов. Имя класса указывает на компонент, описанный метаклассом. Например, каждое свойство класса имеет 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 удаляет объекты метакласса, и их указатели становятся недопустимыми. Необходимо создать новый объект метакласса после обновления класса.

Для получения информации о том, как изменить и перезагрузить классы, видит Автоматические обновления для Модифицированных классов.

Похожие темы