目次 | 前項目 | 次項目 Java コアリフレクション


クラス java.lang.Class

    package  java.lang;

    import java.lang.reflect.Field;

    import java.lang.reflect.Method;

    import java.lang.reflect.Constructor;

    public final class Class extends Object

クラス Class のインスタンスは、実行中の Java プログラムが操作できる形で Java 型を表現します。すべての配列も、同じ要素型および大きさを持つ配列が共有する Class オブジェクトとして、反射されるクラスに属します。また、8 つのプリミティブ Java 型および void も、固有の Class オブジェクトで表示されます。

クラス Class には public 構築子はありません。Java 仮想マシンは、新規クラスのロード時に Class オブジェクトを自動構築します。このオブジェクトは、ユーザプログラムで生成することはできません。

クラス Classjava.lang.reflect パッケージに属しますが、下方互換性のために java.lang 内にも残されています。


メソッド

クラス Class に新メソッドが加わり、以下を実行できるようになりました:

以下は、クラス Class の既存および新規メソッドの説明です。

toString

    public String toString()

この Class オブジェクトがクラス (宣言クラスまたは配列クラス) を表す場合は、単語 class、スペース、およびクラスの完全修飾名から成る String を返します。この Class オブジェクトがインタフェースを表す場合は、このメソッドは単語 interface、スペース、クラスの完全修飾名から成る String を返します。この Class オブジェクトがプリミティブ型を表す場合は、プリミティブ型の名前を返します。この Class オブジェクトが void を表す場合は、String "void" を返します。

このメソッドは、クラス ObjecttoString メソッドをオーバーライドします。

forName

    public static Class forName(String className) 

        throws ClassNotFoundException

クラスの完全修飾名を指定すると、このメソッドは指定クラスの検索、ロード、リンクを試みます。この処理が正常に終了すると、クラスを表す Class オブジェクトを返します。失敗した場合は、ClassNotFoundException をスローします。

配列の Class オブジェクトは、このメソッドを使って獲得できます。これらの Class オブジェクトは、Java 仮想マシンが自動構築します。

プリミティブ Java 型または void を表す Class オブジェクトは、このメソッドを使って獲得することはできません。

newInstance

    public Object newInstance()

        throws InstantiationException, IllegalAccessException

この Class オブジェクトがインスタンス化可能なクラスを表す場合、このオブジェクトが表すクラスの新規インスタンスの生成および初期化を行います。これは、空の引数リストを使うインスタンス生成式と全く同じ方法で実行します。インスタンス生成式の評価が異常終了すると、同じ理由で newInstance の呼出しも異常終了します。正常終了の場合は、新しく生成、初期化されたインスタンスが返ります。

クラスまたは初期化子が呼出しクラスにアクセスできないと、メソッドは IllegalAccessException をスローします。このメソッドが abstract クラスやインタフェースの初期化を試みる場合、あるいはプリミティブ型または void を表す Class オブジェクトに関して呼び出された場合、メソッドは InstantiationException をスローします。

isInstance

    public boolean isInstance(Object obj)

このメソッドは、Java 言語 instanceof 演算子と同等です。指定の Object 引数が非 null で、ClassCastException を出さずにこの Class オブジェクトが表す参照型にキャストできる場合、このメソッドは true を返します。それ以外の場合は、false を返します。

この Class オブジェクトが、プリミティブ型または void を表す場合は、false を返します。

Java 言語仕様のセクション 15.19.2 を参照してください。

isAssignableFrom

    public boolean isAssignableFrom(Class fromClass)

このメソッドは、指定の Class パラメータが表す型を、識別変換または拡張参照変換を使って、この Class オブジェクトが表す型に変換できるかどうかをテストします。変換できる場合は true を返し、できない場合は false を返します。

この Class オブジェクトがプリミティブ型を表す場合、指定の Class パラメータとこの Class オブジェクトが一致するときは true を、一致しないときは false を返します。

指定の Class パラメータが null のときは、このメソッドは NullPointerException を返します。

Java 言語仕様のセクション 5.1.1、5.1.4 および 5.2 を参照してください。

isInterface

    public boolean isInterface()

この Class オブジェクトがインタフェース型を表すときは、true を返し、それ以外の場合は false を返します。

isArray

    public boolean isArray()

この Class オブジェクトが配列型を表すときは trueを、それ以外の場合は false を返します。

isPrimitive

    public boolean isPrimitive()

この Class オブジェクトがプリミティブ Java 型を表す場合は true を、それ以外の場合は false を返します。

プリミティブ java 型と void を表す、9 つの事前定義 Class オブジェクトがあります。これらは Java 仮想マシンが生成し、それぞれが表すプリミティブ型と同じ名前を持ちます。これらのオブジェクトには、以下の public static final 変数を使ってアクセスできます:

    

        java.lang.Boolean.TYPE

        java.lang.Character.TYPE

        java.lang.Byte.TYPE

        java.lang.Short.TYPE

        java.lang.Integer.TYPE

        java.lang.Long.TYPE

        java.lang.Float.TYPE

        java.lang.Double.TYPE

        java.lang.Void.TYPE

このメソッドが true を返すのは、上記の 9 つの Class オブジェクトに対してだけです。

getName

    public String getName()

このクラス Class オブジェクトが表すクラス (宣言または配列)、インタフェース、プリミティブ型、または void の完全修飾名を、String として返します。

getModifiers

    public int getModifiers()

このクラスまたはインタフェースの Java 言語修飾子を整数型にコード化して返します。修飾子は、Java 仮想マシンの定数 public, protected, private, final, および interface から成ります。修飾子はクラス Modifier のメソッドを使って解読します。

修飾子のコード化は、Java 仮想マシン仕様の表 4.1 で定義しています。

getClassLoader

    public ClassLoader getClassLoader()

この Class をロードしたクラスローダオブジェクトを返します。クラスローダを使ってこの Class をロードしなかった場合は、null を返します。

getSuperclass

    public Class getSuperclass()

この Class オブジェクトが Object 以外のクラスを表す場合は、クラスのスーパークラスを表す Class を返します。この Class がクラス Object、あるいはインタフェース型またはプリミティブ型を表す場合は、null を返します。

getInterfaces

    public Class[] getInterfaces()

この Class オブジェクトが表すインタフェースまたはクラスの、インタフェースを表す Class オブジェクトの配列を返します。この Class オブジェクトがクラスを表す場合は、クラスが直接実装するインタフェースを表すオブジェクトを含む配列を返します。この Class オブジェクトがインタフェースを表す場合は、インタフェースの直接スーパーインタフェースを表すオブジェクトを含む配列を返します。この Class がインタフェースを実装しない場合、あるいはプリミティブ型を表す場合は、長さが 0 の配列を返します。

getComponentType

    public Class getComponentType()

この Class オブジェクトが配列型を表す場合は、配列のコンポーネント型を表す Class オブジェクトを返します。それ以外の場合は null を返します。

getDeclaringClass

    public Class getDeclaringClass()

このクラスまたはインタフェースが他のクラスのメンバになっている場合は、メンバとなっている先のクラス (その宣言クラス) を表す Class オブジェクトを返します。このクラスまたはインタフェースが他のクラスのメンバになっていない場合は、null を返します。

getClasses

    public Class[] getClasses()

この Class オブジェクトが表すクラスのメンバとなっている、すべての public クラスおよびインタフェースを表す Class オブジェクトを含む配列を返します。このクラスが宣言したスーパークラス、public クラス、およびインタフェースメンバから継承される public クラスとインタフェースメンバも含まれます。クラスに public メンバやインタフェースがない場合や、この Class オブジェクトがプリミティブ型を表す場合は、長さが 0 の配列を返します。

getFields

    public Field[] getFields()

        throws SecurityException

この Class オブジェクトが表すクラスまたはインタフェースの、すべての public アクセス可能フィールドを反射する Field オブジェクトを含む配列を返します。クラスやインタフェースが宣言したフィールド、およびスーパークラスやスーパーインタフェースが宣言したフィールドもすべて含まれます。(従って、配列にはクラスの public メンバフィールドだけでなく、public 隠しフィールドも含まれます。)クラスやインタフェースに public アクセス可能フィールドがない場合は、長さが 0 の配列を返します。

このメソッドでは、配列型の明確な長さフィールドは返されません。配列を操作するには、クラス Array のメソッドをユーザコードで使います。

この情報へのアクセスが拒否されると、このメソッドは SecurityException をスローします。

Java 言語仕様のセクション 8.2 と 8.3 を参照してください。

getMethods

    public Method[] getMethods()

        throws SecurityException

この Class オブジェクトが表すクラスまたはインタフェースの、すべての public メンバメソッドを反射する Method オブジェクトを含む配列を返します。クラスやインタフェースが宣言したメソッドおよびスーパークラスやスーパーインタフェースから継承されるメソッドも含まれます。クラスまたはインタフェースが public メンバメソッドを持たない場合は、長さが 0 の配列を返します。

この情報へのアクセスが拒否されると、メソッドは SecurityException をスローします。

Java 言語仕様のセクション 8.2 と 8.4 を参照してください。

getConstructors

    public Constructor[] getConstructors()

        throws SecurityException

この Class オブジェクトが表すクラスの、すべての public 構築子を反射する Constructor オブジェクトを含む配列を返します。クラスに public 構築子がない場合や、この Class オブジェクトがインタフェースまたはプリミティブ型を表す場合は、長さが 0 の配列を返します。

この情報へのアクセスが拒否されると、メソッドは SecurityException をスローします。

getField

    public Field getField(String name)

        throws NoSuchFieldException, SecurityException

この Class オブジェクトが表すクラスまたはインタフェースの、指定の public アクセス可能フィールドを反射する Field オブジェクトを返します。name パラメータは、要求フィールドの単純名を指定する String です。

反射されるべきフィールドを見つけるには、この Class オブジェクトが表すクラスまたはインタフェースのすべてのアクセス可能フィールドについて、指定名を使って public フィールドを検索します。

一致するフィールドが見つからない場合、メソッドは NoSuchFieldException をスローします。

基本フィールドへのアクセスが拒否されると、メソッドは SecurityException をスローします。

Java 言語仕様のセクション 8.2 と 8.3 を参照してください。

getMethod

    public Method getMethod(String name, Class[] parameterTypes)

        throws NoSuchMethodException, SecurityException

この Class オブジェクトが表すクラスまたはインタフェースの、指定の public メンバ メソッドを反射する Method オブジェクトを返します。name パラメータは、必要なメソッドの単純名を指定する String です。parameterTypes パラメータは、メソッドの形式パラメータ型を宣言順に識別する Class オブジェクトの配列です。

反射するメソッドを見つけるには、この Class オブジェクトが表すクラスまたはインタフェースのすべてのメンバメソッドについて、指定名およびまったく同じ形式パラメータ型を使って public メソッドを検索します。

一致するメソッドが見つからないと、メソッドは NoSuchMethodException をスローします。

基本メソッドへのアクセスが拒否されると、メソッドは SecurityException をスローします。

Java 言語仕様のセクション 8.2 と 8.4 を参照してください。

getConstructor

    public Constructor getConstructor(Class[] parameterTypes)

        throws NoSuchMethodException, SecurityException

この Class オブジェクトが表すクラスの、指定の public 構築子を反射する Constructor オブジェクトを返します。parameterTypes パラメータは、構築子の形式パラメータ型を宣言順に識別する Class オブジェクトの配列です。

反射する構築子を見つけるには、この Class オブジェクトが表すクラスのすべての構築子について、まったく同じ形式パラメータ型を使って public 構築子を検索します。

一致する構築子がないと、メソッドは NoSuchMethodException をスローします。

基本構築子へのアクセスを拒否されると、メソッドは SecurityException をスローします。

getDeclaredClasses

    public Class[] getDeclaredClasses()

        throws SecurityException

この Class オブジェクトが表すクラスのメンバとして宣言された、すべてのクラスおよびインタフェースを反射する Class オブジェクトの配列を返します。これには、クラスが宣言した public, protected, デフォルト (パッケージ) アクセス、private のクラスおよびインタフェースは含まれますが、継承クラスとインタフェースは含まれません。クラスがクラスまたはインタフェースをメンバとして宣言していない場合や、この Class オブジェクトがプリミティブ型を表す場合は、長さが 0 の配列を返します。

この情報へのアクセスが拒否されると、メソッドは SecurityException をスローします。

getDeclaredFields

    public Field[] getDeclaredFields()

        throws SecurityException

この Class オブジェクトが表すクラスまたはインタフェースが宣言した、すべてのフィールドを反射する Field オブジェクトの配列を返します。これには public, protected, デフォルト (パッケージ) アクセス, および private のフィールドは含まれますが、継承フィールドは含まれません。クラスやインタフェースがフィールドを宣言しない場合や、この Class オブジェクトがプリミティブ型を表す場合は、長さが 0 の配列を返します。

この情報へのアクセスが拒否されると、メソッドは SecurityException をスローします。

Java 言語仕様のセクション 8.2 と 8.3 を参照してください。

getDeclaredMethods

    public Method[] getDeclaredMethods()

        throws SecurityException

この Class オブジェクトが表すクラスまたはインタフェースが宣言した、すべてのメソッドを反射する Method オブジェクトの配列を返します。これには、public, protected, デフォルト (パッケージ) アクセス, および private のメソッドは含まれますが、継承メソッドは含まれません。クラスまたはインタフェースがメソッドを宣言しない場合や、この Class オブジェクトがプリミティブ型を表す場合は、長さが 0 の配列を返します。

この情報へのアクセスが拒否されると、メソッドは SecurityException をスローします。

Java 言語仕様のセクション 8.2 と 8.4 を参照してください。

getDeclaredConstructors

    public Constructor[] getDeclaredConstructors()

        throws SecurityException

この Class オブジェクトが表すクラスが宣言した、すべての構築子を反射する Constructor オブジェクトを返します。public, protected, デフォルト (パッケージ) アクセス, および private 構築子です。この Class オブジェクトがインタフェースやプリミティブ型を表す場合は、長さが 0 の配列を返します。

この情報へのアクセスを拒否されると、メソッドは SecurityException をスローします。

getDeclaredField

    public Field getDeclaredField(String name)

        throws NoSuchFieldException, SecurityException

この Class オブジェクトが表すクラスまたはインタフェースの、指定宣言フィールドを反射する Field オブジェクトを返します。name パラメータは、要求フィールドの単純名を指定する String です。

指定名のフィールドが見つからないと、メソッドは NoSuchFieldException をスローします。

基本フィールドへのアクセスを拒否されると、メソッドは SecurityException をスローします。

Java 言語仕様のセクション 8.2 と 8.3 を参照してください。

getDeclaredMethod

    public Method getDeclaredMethod(String name,

                                Class[] parameterTypes)

        throws NoSuchMethodException, SecurityException

この Class オブジェクトが表すクラスまたはインタフェースの指定宣言メソッドを反射する、Method オブジェクトを返します。name パラメータは、要求メソッドの単純名を指定する String です。parameterTypes パラメータは、メソッドの形式パラメータ型を宣言順に識別する Class オブジェクトの配列です。

一致するメソッドがないと、メソッドは NoSuchMethodException をスローします。

基本メソッドへのアクセスを拒否されると、メソッドは SecurityException をスローします。

Java 言語仕様のセクション 8.2 と 8.4 を参照してください。

getDeclaredConstructor

    public Constructor getDeclaredConstructor(Class[] parameterTypes)

        throws NoSuchMethodException, SecurityException

この Class オブジェクトが表すクラスまたはインタフェースの指定構築子を反射する、Constructor オブジェクトを返します。parameterTypes パラメータは、構築子の形式パラメータ型を宣言順に識別する、Class オブジェクトの配列です。

一致する構築子がないと、メソッドは NoSuchMethodException をスローします。

基本構築子へのアクセスを拒否されると、メソッドは SecurityException をスローします。



目次 | 前項目 | 次項目
Copyright (C) 1996, 1997 Sun Microsystems, Inc. All rights reserved.