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

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

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

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

  • 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.propertymeta.method, и так далее) от meta.class объект.

Примечание

Метакласс является термином, использованным здесь, чтобы относиться ко всем классам в meta пакет. meta.class класс в meta пакет, экземпляры которого содержат информацию о MATLAB® классы. Метаданные являются информацией о классах, содержавшихся в метаклассах.

Жизненный цикл объекта метакласса

Когда вы изменяете определение класса, MATLAB перезагружает определение класса. Если экземпляры класса существуют, MATLAB обновляет те объекты согласно новому определению.

Однако MATLAB не обновляет существующие объекты метакласса к новому определению класса. Если вы изменяете определение класса, в то время как объекты метакласса того класса существуют, MATLAB удаляет объекты метакласса, и их указатели становятся недопустимыми. Необходимо создать новый объект метакласса после обновления класса.

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

Похожие темы