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

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

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

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

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

Похожие темы