java.lang
クラス Class

java.lang.Object
  |
  +--java.lang.Class

public final class Class
extends Object

クラス Class のインスタンスは、実行中の Java アプリケーションのクラスとインタフェースを表します。同様にどの配列も、同じ要素型と次元数を持つ配列によって共有される Class オブジェクトとしてリフレクトされるクラスに属します。

Class には、public コンストラクタはありません。Class オブジェクトは、クラスがロードされる際に Java Virtual Machine によって自動的に構築されます。

以下の例では、Class オブジェクトを使ってオブジェクトのクラス名を出力します。

     void printClassName(Object obj) {
         System.out.println("The class of " + obj +
                            " is " + obj.getClass().getName());
     }

導入されたバージョン:
JDK1.0

メソッドの概要
static Class forName(String className)
          指定された文字列名を持つクラスに関連した Class オブジェクトを返します。
 String getName()
          この Class オブジェクトが表すエンティティ (クラス、インタフェース、配列クラス、プリミティブ型、または void) の完全指定の名前を、String として返します。
 InputStream getResourceAsStream(String name)
          指定された名前のリソースを検索します。
 boolean isArray()
          この Class オブジェクトが配列クラスを表すかどうかを判定します。
 boolean isAssignableFrom(Class cls)
          この Class オブジェクトが表すクラスまたはインタフェースが、指定された Class パラメータが表すクラスまたはインタフェースと等しいかどうか、あるいはそのスーパークラスあるいはスーパーインタフェースであるかどうかを判定します。
 boolean isInstance(Object obj)
          指定された Object が、この Class が表すオブジェクトと代入互換の関係にあるかどうかを判定します。
 boolean isInterface()
          指定された Class オブジェクトがインタフェース型を表すかどうかを判定します。
 Object newInstance()
          クラスの新しいインスタンスを生成します。
 String toString()
          オブジェクトを文字列に変換します。
 
クラス java.lang.Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

メソッドの詳細

toString

public String toString()
オブジェクトを文字列に変換します。その文字列は、「class」または「interface」などの文字列、続いてスペース、続いて getName が返す形式の完全指定のクラス名という構成で表現されます。この Class オブジェクトがプリミティブ型を表す場合、このメソッドはプリミティブ型の名前を返し、void を表す場合は、「void」を返します。
オーバーライド:
クラス Object 内の toString
戻り値:
このオブジェクトの文字列表現

forName

public static Class forName(String className)
                     throws ClassNotFoundException
指定された文字列名を持つクラスに関連した Class オブジェクトを返します。クラスまたはインタフェースの完全指定の名前を指定すると、このメソッドは、そのクラスを探し、ロードして、リンクしようとします。成功すると、そのクラスを表す Class オブジェクトを返します。失敗すると、メソッドは、ClassNotFoundException をスローします。

たとえば以下の記述は、java.lang.Thread という名前のクラスの実行時における Class 記述子を返します。

パラメータ:
className - 要求するクラスの完全指定の名前
戻り値:
指定された名前を持つクラスの Class 記述子
例外:
ClassNotFoundException - クラスが見つからなかった場合
導入されたバージョン:
JDK1.0

newInstance

public Object newInstance()
                   throws InstantiationException,
                          IllegalAccessException
クラスの新しいインスタンスを生成します。
戻り値:
このオブジェクトが表す、クラスの新しく割り当てられたインスタンス。これは、new 式に空の引数リストを指定した場合と同じように行われる
例外:
IllegalAccessException - クラスまたは初期化子にアクセスできない場合
InstantiationException - アプリケーションが、abstract クラスまたはインタフェースのインスタンスを生成しようとした場合、あるいはインスタンスの生成がほかの理由で失敗した場合
導入されたバージョン:
JDK1.0

isInstance

public boolean isInstance(Object obj)
指定された Object が、この Class が表すオブジェクトと代入互換の関係にあるかどうかを判定します。このメソッドは、Java 言語の instanceof 演算子と動的に等価です。指定された Object 引数が null ではなく、この Class オブジェクトが表す参照型に ClassCastException をスローすることなくキャストできる場合、このメソッドは true を返します。そうでない場合は、false を返します。

特に、この Class オブジェクトが宣言クラスを表すときには、このメソッドは、指定された Object 引数が表現クラス (またはそのサブクラス) のインスタンスの場合は true 、そうでない場合は false を返します。この Class オブジェクトが配列クラスを表すときには、恒等変換または拡張参照変換を用いて指定された Object 引数を配列クラスのオブジェクトに変換できる場合は true 、そうでない場合は false を返します。この Class オブジェクトがインタフェースを表すときには、指定された Object 引数のクラスまたはスーパークラスがこのインタフェースを実装する場合は true 、そうでない場合は false を返します。この Class オブジェクトがプリミティブ型を表す場合は false を返します。

パラメータ:
obj - チェック対象のオブジェクト
戻り値:
obj が このクラスのインスタンスの場合は true
導入されたバージョン:
JDK1.1

isAssignableFrom

public boolean isAssignableFrom(Class cls)
この Class オブジェクトが表すクラスまたはインタフェースが、指定された Class パラメータが表すクラスまたはインタフェースと等しいかどうか、あるいはそのスーパークラスあるいはスーパーインタフェースであるかどうかを判定します。どちらかに当てはまる場合は true 、そうでない場合は false を返します。この Class オブジェクトがプリミティブ型を表すときには、指定された Class パラメータとこの Class オブジェクトが一致する場合は true 、そうでない場合は false を返します。

特にこのメソッドは、指定された Class パラメータが表現する型を、恒等変換または拡張参照変換を使って、この Class オブジェクトが表す型に変換できるかどうかを調べます。詳細は、「Java 言語仕様」 のセクション 5.1.1 と 5.1.4 を参照してください。

パラメータ:
cls - チェック対象の Class オブジェクト
戻り値:
cls 型のオブジェクトがこのクラスに割り当てられるかどうかを示す boolean
例外:
NullPointerException - 指定された Class パラメータが null の場合
導入されたバージョン:
JDK1.1

isInterface

public boolean isInterface()
指定された Class オブジェクトがインタフェース型を表すかどうかを判定します。
戻り値:
このオブジェクトがインタフェースを表す場合は true、そうでない場合は false

isArray

public boolean isArray()
この Class オブジェクトが配列クラスを表すかどうかを判定します。
戻り値:
このオブジェクトが配列クラスを表す場合は true、そうでない場合は false
導入されたバージョン:
JDK1.1

getName

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

この Class オブジェクトが配列のクラスを表す場合、名前の内部形式では、先頭に配列の入れ子の深さを表すいくつかの "[" 文字が付き、そのあとに Java のシグニチャー形式の要素型の名前が続きます。したがって、

 (new Object[3]).getClass().getName()
は "[Ljava.lang.Object;" を返し、
 (new int[3][4][5][6][7][8][9]).getClass().getName()
は "[[[[[[[I" を返します。要素型の名前は、次のように符号化します。
 B            byte
 C            char
 D            double
 F            float
 I            int
 J            long
 Lclassname;  クラスまたはインタフェース
 S            short
 Z            boolean
クラス名またはインタフェース名の classname は、上記の例のように完全指定の名前で指定されます。
戻り値:
このオブジェクトが表すクラスまたはインタフェースの完全指定の名前

getResourceAsStream

public InputStream getResourceAsStream(String name)
指定された名前のリソースを検索します。この名前を持つリソースが見つからない場合は、null を返します。あるクラスに関連したリソースを検索する規則は、プロファイルに固有です。
パラメータ:
name - 要求されるリソースの名前
戻り値:
java.io.InputStream オブジェクト
導入されたバージョン:
JDK1.1