Main Content

クラスのメタデータ

クラスのメタデータとは

クラスのメタデータとは、さまざまなメタクラス オブジェクトから利用できるクラス定義に関する情報のことです。クラスのインスタンスを作成せずに情報を取得するには、メタクラス オブジェクトを使用します。メタデータを使用すると、プログラムによってクラスを検証できます。各メタクラスには、それが記述するクラスやクラス コンポーネントに関する情報を含むプロパティ、メソッド、イベントが含まれます。

すべてのクラス コンポーネントには関連付けられたメタクラスがあり、それらには matlab.metadata.Class オブジェクトからアクセスします。たとえば、matlab.alias.AliasFileManager クラスの matlab.metadata.Class オブジェクトを作成します。

mc = ?matlab.alias.AliasFileManager
mc = 

  Class with properties:

                     Name: 'matlab.alias.AliasFileManager'
              Description: 'Create and edit alias definition files'
      DetailedDescription: '  Use an AliasFileManager object to create...'
                   Sealed: 1
                 Abstract: 0
              Enumeration: 0
          ConstructOnLoad: 0
         HandleCompatible: 1
          InferiorClasses: [0×1 matlab.metadata.Class]
                Namespace: [1×1 matlab.metadata.Namespace]
                  Aliases: [0×1 string]
     RestrictsSubclassing: 1
             PropertyList: [1×1 matlab.metadata.Property]
               MethodList: [28×1 matlab.metadata.Method]
                EventList: [1×1 matlab.metadata.Event]
    EnumerationMemberList: [0×1 matlab.metadata.EnumerationMember]
           SuperclassList: [1×1 matlab.metadata.Class]

matlab.metadata 名前空間

matlab.metadata 名前空間には、クラスとクラス コンポーネントの定義が記述されたメタクラスが含まれています。クラス名はメタクラスによって記述されるコンポーネントを表します。たとえば、各クラス プロパティには関連付けられた matlab.metadata.Property があります。クラス コンポーネントに定義された属性は、それぞれのメタクラス オブジェクトのプロパティに対応します。

メタクラス オブジェクト

メタクラスは、それぞれのクラス コンストラクターを直接呼び出してもインスタンス化できません。クラスのインスタンスまたはクラス名からメタクラス オブジェクトを作成します。

  • ?ClassName — 名前付きクラスの matlab.metadata.Class オブジェクトを返します。変数に文字としてクラス名が格納されている matlab.metadata.Class.fromName を使用します。

  • matlab.metadata.Class.fromName('ClassName') — 名前付きクラスの matlab.metadata.Class オブジェクトを返します (matlab.metadata.Class.fromNamematlab.metadata.Class のメソッドです)。

  • metaclass(obj) — クラス インスタンス (metaclass) のメタクラス オブジェクトを返します。

? 演算子を使用してクラス名から matlab.metadata.Class オブジェクトを作成します。

mc = ?MyClass;

fromName メソッドを使用してクラス名から matlab.metadata.Class オブジェクトを作成します。

mc = matlab.metadata.Class.fromName('MyClass');

クラス インスタンスから matlab.metadata.Class オブジェクトを作成します。

obj = MyClass;
mc = metaclass(obj);

関数 metaclass は、matlab.metadata.Class オブジェクト (すなわち、matlab.metadata.Class クラスのオブジェクト) を返します。matlab.metadata.Class オブジェクトから、他のメタクラス オブジェクト (matlab.metadata.Propertymatlab.metadata.Method など) を取得できます。

メモ

ここで、メタクラスとは matlab.metadata 名前空間内のすべてのクラスを指す用語です。matlab.metadata.Class は、MATLAB® クラスに関する情報がインスタンスに含まれる matlab.metadata 名前空間内のクラスです。メタデータはメタクラスに含まれるクラス情報です。

メタクラス オブジェクトのライフサイクル

クラス定義を変更すると、MATLAB はそのクラス定義を再度読み込みます。クラスのインスタンスが存在する場合、MATLAB は新しい定義に従ってそれらのオブジェクトを更新します。

ただし、MATLAB は既存のメタクラス オブジェクトを新しいクラス定義に更新しません。クラスのメタクラス オブジェクトが存在している場合にクラス定義を変更すると、MATLAB はメタクラス オブジェクトを削除して、そのハンドルを無効にします。クラスの更新後、新しいメタクラス オブジェクトを作成しなければなりません。

クラスの変更と再読み込みの方法ついての詳細は、変更済みクラスの自動更新を参照してください。

関連するトピック