Type クラス
名前空間
使用方法
例: 名前に基づいた Type のインスタンス化
次のサンプルは、Type メソッドを使用して、Type をその名前に基づいてインスタンス化する方法を示します。このシナリオの典型的な応用として、パッケージの登録者が、インストールされたパッケージの一部としてインターフェースのカスタム実装を提供する場合があります。パッケージは、登録者の組織のカスタム設定を介してインターフェースを実装するクラスの名前を取得できます。パッケージは、このクラス名に対応する型をインスタンス化して、登録者が実装したメソッドを呼び出すことができます。
このサンプルでは、Vehicle が VehicleImpl クラスによって実装されるインターフェースを表します。最後のクラスには、VehicleImpl に実装されたメソッドを呼び出すコードサンプルが含まれます。
クラスのプロパティ
class プロパティは、コールされたデータ型の System.Type を返します。これは、プリミティブデータ型とコレクション、sObject 型、ユーザ定義クラスを含むすべての Apex 組み込みデータ型で公開されます。forName メソッドの代わりにこのプロパティを使用できます。
JSON.deserialize、deserializeStrict、JSONParser.readValueAs、readValueAsStrict メソッドの 2 番目の引数にこのプロパティを使用して、デシリアライズするオブジェクトのデータ型を取得できます。次に例を示します。
Type のメソッド
Type のメソッドは次のとおりです。
equals(typeToCompare)
署名
public Boolean equals(Object typeToCompare)
パラメータ
- typeToCompare
- 型: Object
- 現在のデータ型と比較するデータ型です。
戻り値
型: Boolean
例
forName(fullyQualifiedName)
署名
public static System.Type forName(String fullyQualifiedName)
パラメータ
- fullyQualifiedName
- 型: String
- データ型を取得するクラスの完全修飾名です。完全修飾クラス名には、MyNamespace.ClassName などの名前空間名が含まれます。
戻り値
型: System.Type
使用方法
getName()
署名
public String getName()
戻り値
型: String
例
この例では、Type の名前を取得する方法を示します。最初に forName をコールして Type を取得し、次にその Type オブジェクトに対して getName をコールします。
hashCode()
署名
public Integer hashCode()
戻り値
型: Integer
使用方法
返されたハッシュコード値は、String.hashCode が返す型名のハッシュコードに対���します。
isAssignableFrom(sourceType)
署名
public Boolean isAssignableFrom(Type sourceType)
パラメータ
- sourceType
- 互換性チェックで使用するオブジェクトの種別。
戻り値
型: Boolean
- childType.isAssignableFrom(parentType)
- typeA.isAssignableFrom(TypeB)。TypeB は TypeA の同階層
- typeA.isAssignableFrom(TypeB)。TypeB と TypeA は関連性なし
使用方法
instanceof 演算子とは異なり、このメソッドでは、クラスのインスタンスを作成しなくても、種別の互換性をチェックできます。このメソッドにより、instanceof で必要な静的コンパイル時依存関係が解消されます。
例
次のコードスニペットでは、最初に、Callable インターフェースを実装する同階層のクラス A および B と、関連性のないクラス C が定義されています。次に、isAssignableFrom() を使用して、いくつかの種別の比較が探索されています。
newInstance()
署名
public Object newInstance()
戻り値
型: Object
使用方法
newInstance は汎用オブジェクト型を返すため、この値を保持する変数の型に戻り値を変換する必要があります。
このメソッドを使用すると、インターフェースを実装する Type をインスタンス化し、そのメソッドをコールできると同時に、他のユーザがメソッドの実装を提供できるようになります。たとえば、パッケージ開発者がインターフェースを提供し、登録者がそのインターフェースを実装してパッケージをインストールできます。パッケージのコードは、登録者の Type をインスタンス化することで、登録者のインターフェースメソッドの実装をコールします。
例
次の例では、Type のインスタンスを作成する方法を示します。最初に forName をクラスの名前 (ShapeImpl) でコールして Type を取得し、次にこの Type オブジェクトに対して newInstance をコールします。newObj インスタンスは、ShapeImpl クラスが実装するインターフェース型 (Shape) を使用して宣言されます。newInstance メソッドの戻り値は、Shape 型に変換されます。
toString()
署名
public String toString()
戻り値
型: String
使用方法
このメソッドは、getName と同じ値を返します。String.valueOf および System.debug はこのメソッドを使用して、Type 引数を string に変換します。
例
この例では、Integer のリストに対応する Type に対して toString をコールします。