java.lang.Object | +--java.lang.Class
クラス 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()); }
メソッドの概要 | |
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 |
メソッドの詳細 |
public String toString()
getName
が返す形式の完全指定のクラス名という構成で表現されます。この Class
オブジェクトがプリミティブ型を表す場合、このメソッドはプリミティブ型の名前を返し、void を表す場合は、「void」を返します。public static Class forName(String className) throws ClassNotFoundException
Class
オブジェクトを返します。クラスまたはインタフェースの完全指定の名前を指定すると、このメソッドは、そのクラスを探し、ロードして、リンクしようとします。成功すると、そのクラスを表す Class オブジェクトを返します。失敗すると、メソッドは、ClassNotFoundException をスローします。
たとえば以下の記述は、java.lang.Thread
という名前のクラスの実行時における Class
記述子を返します。
Class t = Class.forName("java.lang.Thread")
className
- 要求するクラスの完全指定の名前Class
記述子public Object newInstance() throws InstantiationException, IllegalAccessException
new
式に空の引数リストを指定した場合と同じように行われる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
が このクラスのインスタンスの場合は truepublic 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
値public boolean isInterface()
Class
オブジェクトがインタフェース型を表すかどうかを判定します。true
、そうでない場合は false
public boolean isArray()
Class
オブジェクトが配列クラスを表すかどうかを判定します。true
、そうでない場合は false
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
" を返します。要素型の名前は、次のように符号化します。
クラス名またはインタフェース名の classname は、上記の例のように完全指定の名前で指定されます。B byte C char D double F float I int J long Lclassname; クラスまたはインタフェース S short Z boolean
public InputStream getResourceAsStream(String name)
name
- 要求されるリソースの名前java.io.InputStream
オブジェクト