T
- この Class
オブジェクトでモデル化されるクラスの型。たとえば、String.class
の型は Class<String>
である。モデル化するクラスが不明な場合は Class<?>
を使用する。public final class Class<T> extends Object implements Serializable, GenericDeclaration, Type, AnnotatedElement
Class
クラスのインスタンスは、実行中の Java アプリケーションのクラスおよびインタフェースを表します。列挙はクラスの一種、注釈はインタフェースの一種です。同様にどの配列も、同じ要素のタイプおよび次元数を持つすべての配列により共有される Class
オブジェクトとしてリフレクトされるクラスに属します。プリミティブ Java 型 (boolean
、byte
、char
、short
、int
、long
、float
、および double
) やキーワード void
も、Class
オブジェクトとして表されます。
Class
には、public コンストラクタはありません。Class
オブジェクトは、クラスがロードされる際に Java Virtual Machine によって、およびクラスローダーの defineClass
メソッドの呼び出しによって自動的に構築されます。
以下の例では、Class
オブジェクトを使ってオブジェクトのクラス名を出力します。
void printClassName(Object obj) { System.out.println("The class of " + obj + " is " + obj.getClass().getName()); }
クラスリテラルを使って、名前付き型 (または void) のための Class
オブジェクトを取得することもできます。『Java™ 言語仕様』のセクション 15.8.2 を参照してください。例を示します。
System.out.println("The name of class Foo is: "+Foo.class.getName());
ClassLoader.defineClass(byte[], int, int)
, 直列化された形式修飾子と型 | メソッドと説明 |
---|---|
<U> Class<? extends U> |
asSubclass(Class<U> clazz)
指定されたクラスオブジェクトによって表されるクラスのサブクラスを表すためにこの
Class オブジェクトをキャストします。 |
T |
cast(Object obj)
この
Class オブジェクトが表すクラスまたはインタフェースにオブジェクトをキャストします。 |
boolean |
desiredAssertionStatus()
このメソッドの呼び出し時にこのクラスを初期化する場合、クラスに割り当てられるアサーションステータスを返します。
|
static Class<?> |
forName(String className)
指定された文字列名を持つクラスまたはインタフェースに関連付けられた、
Class オブジェクトを返します。 |
static Class<?> |
forName(String name, boolean initialize, ClassLoader loader)
指定されたクラスローダーを使って、指定された文字列名を持つクラスまたはインタフェースに関連付けられた
Class オブジェクトを返します。 |
<A extends Annotation> |
getAnnotation(Class<A> annotationClass)
存在する場合は、この要素の指定された型の注釈を返し、そうでない場合は null を返します。
|
Annotation[] |
getAnnotations()
この要素に存在するすべての注釈を返します。
|
String |
getCanonicalName()
『Java 言語仕様』の定義に従って、基本となるクラスの正規名を返します。
|
Class<?>[] |
getClasses()
この
Class オブジェクトが表すクラスのメンバーである、すべての public クラスおよびインタフェースを表す Class オブジェクトを格納している配列を返します。 |
ClassLoader |
getClassLoader()
クラスのクラスローダーを返します。
|
Class<?> |
getComponentType()
配列のコンポーネント型を表す
Class を返します。 |
Constructor<T> |
getConstructor(Class<?>... parameterTypes)
この
Class オブジェクトが表すクラスの指定された public コンストラクタをリフレクトする Constructor オブジェクトを返します。 |
Constructor<?>[] |
getConstructors()
この
Class オブジェクトが表すクラスのすべての public コンストラクタをリフレクトする Constructor オブジェクトを格納している配列を返します。 |
Annotation[] |
getDeclaredAnnotations()
この要素に直接存在するすべての注釈を返します。
|
Class<?>[] |
getDeclaredClasses()
この
Class オブジェクトが表すクラスのメンバーとして宣言されたすべてのクラスおよびインタフェースをリフレクトする Class オブジェクトの配列を返します。 |
Constructor<T> |
getDeclaredConstructor(Class<?>... parameterTypes)
この
Class オブジェクトが表すクラスまたはインタフェースの指定されたコンストラクタをリフレクトする Constructor オブジェクトを返します。 |
Constructor<?>[] |
getDeclaredConstructors()
この
Class オブジェクトが表すクラスによって宣言されたすべてのコンストラクタをリフレクトする Constructor オブジェクトの配列を返します。 |
Field |
getDeclaredField(String name)
この
Class オブジェクトが表すクラスまたはインタフェースの、指定された宣言されたフィールドをリフレクトする Field オブジェクトを返します。 |
Field[] |
getDeclaredFields()
この
Class オブジェクトが表すクラスまたはインタフェースによって宣言されたすべてのフィールドをリフレクトする Field オブジェクトの配列を返します。 |
Method |
getDeclaredMethod(String name, Class<?>... parameterTypes)
この
Class オブジェクトが表すクラスまたはインタフェースの、指定された宣言されたメソッドをリフレクトする Method オブジェクトを返します。 |
Method[] |
getDeclaredMethods()
この
Class オブジェクトが表すクラスまたはインタフェースによって宣言されたすべてのメソッドをリフレクトする Method オブジェクトの配列を返します。 |
Class<?> |
getDeclaringClass()
この
Class オブジェクトが表すクラスまたはインタフェースが別のクラスのメンバーの場合は、それが宣言されたクラスを表す Class オブジェクトを返します。 |
Class<?> |
getEnclosingClass()
基本となるクラスを直接囲むクラスを返します。
|
Constructor<?> |
getEnclosingConstructor()
この
Class オブジェクトが、コンストラクタ内のローカルクラスまたは匿名クラスを表す場合は、基本となるクラスを直接囲むコンストラクタを表す Constructor オブジェクトを返します。 |
Method |
getEnclosingMethod()
この
Class オブジェクトが、メソッド内のローカルクラスまたは匿名クラスを表す場合は、基本となるクラスを直接囲むメソッドを表す Method オブジェクトを返します。 |
T[] |
getEnumConstants()
この enum クラスの要素を返すか、この Class オブジェクトが enum 型を表さない場合は null を返します。
|
Field |
getField(String name)
この
Class オブジェクトが表すクラスまたはインタフェースの、指定された public メンバーフィールドをリフレクトする Field オブジェクトを返します。 |
Field[] |
getFields()
この
Class オブジェクトが表すクラスまたはインタフェースのすべてのアクセス可能な public フィールドをリフレクトする、Field オブジェクトを保持している配列を返します。 |
Type[] |
getGenericInterfaces()
このオブジェクトによって表されるインタフェースまたはクラスによって直接実装されるインタフェースを表す
Type を返します。 |
Type |
getGenericSuperclass()
この
Class で表されるエンティティー (クラス、インタフェース、プリミティブ型、または void) の直接のスーパークラスを表す Type を返します。 |
Class<?>[] |
getInterfaces()
このオブジェクトが表すクラスまたはインタフェースによって実装されるインタフェースを取得します。
|
Method |
getMethod(String name, Class<?>... parameterTypes)
この
Class オブジェクトが表すクラスまたはインタフェースの、指定された public メンバーメソッドをリフレクトする Method オブジェクトを返します。 |
Method[] |
getMethods()
この
Class オブジェクトが表すクラスまたはインタフェースのすべての public メンバーメソッドをリフレクトする Method オブジェクトを格納している配列を返します。クラスまたはインタフェースが宣言したもの、およびスーパークラスやスーパーインタフェースから継承されたものも含まれます。 |
int |
getModifiers()
このクラスまたはインタフェースの Java 言語修飾子を整数型に符号化して返します。
|
String |
getName()
この
Class オブジェクトが表すエンティティー (クラス、インタフェース、配列クラス、プリミティブ型、または void) の名前を、String として返します。 |
Package |
getPackage()
このクラスのパッケージを取得します。
|
ProtectionDomain |
getProtectionDomain()
このクラスの
ProtectionDomain を返します。 |
URL |
getResource(String name)
指定された名前のリソースを探します。
|
InputStream |
getResourceAsStream(String name)
指定された名前のリソースを探します。
|
Object[] |
getSigners()
このクラスの署名者を取得します。
|
String |
getSimpleName()
ソースコード内で指定されたとおり、基本となるクラスの単純名を返します。
|
Class<? super T> |
getSuperclass()
この
Class で表されるエンティティー (クラス、インタフェース、プリミティブ型、または void) のスーパークラスを表す Class を返します。 |
TypeVariable<Class<T>>[] |
getTypeParameters()
GenericDeclaration オブジェクトによって表されるジェネリック宣言で宣言された型変数を表す TypeVariable オブジェクトの配列を宣言順に返します。 |
boolean |
isAnnotation()
Class オブジェクトが注釈型を表す場合は true を返します。 |
boolean |
isAnnotationPresent(Class<? extends Annotation> annotationClass)
指定された型の注釈がこの要素に存在する場合は true を返し、そうでない場合は false を返します。
|
boolean |
isAnonymousClass()
基本となるクラスが匿名クラスである場合だけ
true を返します。 |
boolean |
isArray()
この
Class オブジェクトが配列クラスを表すかどうかを判定します。 |
boolean |
isAssignableFrom(Class<?> cls)
この
Class オブジェクトが表すクラスまたはインタフェースが、指定された Class パラメータが表すクラスまたはインタフェースと等しいかどうか、あるいはそのスーパークラスあるいはスーパーインタフェースであるかどうかを判定します。 |
boolean |
isEnum()
このクラスがソースコードで enum として宣言された場合だけ true を返します。
|
boolean |
isInstance(Object obj)
指定された
Object が、この Class が表すオブジェクトと代入互換の関係にあるかどうかを判定します。 |
boolean |
isInterface()
指定された
Class オブジェクトがインタフェース型を表すかどうかを判定します。 |
boolean |
isLocalClass()
基本となるクラスがローカルクラスである場合だけ
true を返します。 |
boolean |
isMemberClass()
基本となるクラスがメンバークラスである場合だけ
true を返します。 |
boolean |
isPrimitive()
指定された
Class オブジェクトがプリミティブ型を表すかどうかを判定します。 |
boolean |
isSynthetic()
このクラスが合成クラスである場合は
true を返し、そうでない場合は false を返します。 |
T |
newInstance()
この
Class オブジェクトが表すクラスの新しいインスタンスを作成します。 |
String |
toString()
オブジェクトを文字列に変換します。
|
public String toString()
getName
が返す形式の完全指定クラス名という順序で表現されます。この Class
オブジェクトがプリミティブ型を表す場合、このメソッドはプリミティブ型の名前を返します。この Class
オブジェクトが void を表す場合は、「void」を返します。public static Class<?> forName(String className) throws ClassNotFoundException
Class
オブジェクトを返します。このメソッドを呼び出すことは、次の記述に相当します。
Class.forName(className, true, currentLoader)
ここで、currentLoader
は、現在のクラスを定義するクラスローダーを示します。
たとえば以下の記述は、java.lang.Thread
という名前のクラスの実行時における Class
記述子を返します。
Class t = Class.forName("java.lang.Thread")
forName("X")
の呼び出しによって、X
というクラスが初期化されます。
className
- 要求するクラスの完全指定の名前。Class
オブジェクト。LinkageError
- リンケージに失敗した場合ExceptionInInitializerError
- このメソッドによる初期化に失敗した場合ClassNotFoundException
- クラスが見つからなかった場合public static Class<?> forName(String name, boolean initialize, ClassLoader loader) throws ClassNotFoundException
Class
オブジェクトを返します。クラスまたはインタフェースの完全指定名を (getName
が返す形式と同じ形式で) 指定すると、このメソッドはクラスまたはインタフェースを見つけ、ロードして、リンクしようとします。クラスまたはインタフェースをロードする際には、指定されたクラスローダーが使用されます。loader
パラメータが null の場合、クラスはブートストラップクラスローダーを使ってロードされます。クラスが初期化されるのは、initialize
パラメータが true
で、その初期化が以前に行われていない場合だけです。
name
がプリミティブ型または void を示す場合、無名パッケージ内で name
という名前のユーザー定義のクラスを見つけようとします。このため、このメソッドを使って、プリミティブ型または void を表す Class
オブジェクトを取得することはできません。
name
が配列クラスを示す場合、配列クラスのコンポーネント型はロードされますが、初期化されません。
たとえば、インスタンスメソッドでは、
Class.forName("Foo")
は、次と同じです。
Class.forName("Foo", true, this.getClass().getClassLoader())
ただし、このメソッドは、『Java 言語仕様』のセクション 12.2、12.3、12.4 で指定された、ロード、リンク、または初期化に関連するエラーをスローします。このメソッドは、要求されたクラスが呼び出し側からアクセス可能であるかどうかをチェックしません。
loader
が null
で、セキュリティーマネージャーが存在し、呼び出し側のクラスローダーが null でない場合、このメソッドはセキュリティマネージャーの checkPermission
メソッドを RuntimePermission("getClassLoader")
のアクセス権を使って呼び出すことによって、ブートストラップクラスローダーに問題なくアクセスできることを保証します。
name
- 要求するクラスの完全指定の名前initialize
- クラスを初期化する必要の有無loader
- クラスのロード元である必要があるクラスローダーLinkageError
- リンケージに失敗した場合ExceptionInInitializerError
- このメソッドによる初期化に失敗した場合ClassNotFoundException
- 指定されたクラスローダーによってクラスが見つからなかった場合forName(String)
, ClassLoader
public T newInstance() throws InstantiationException, IllegalAccessException
Class
オブジェクトが表すクラスの新しいインスタンスを作成します。new
式に空の引数リストを指定した場合と同じように、クラスのインスタンスが生成されます。クラスは、初期化されていなければ初期化されます。
このメソッドはチェック例外など、引数なしのコンストラクタによってスローされた例外を送ることに注意してください。このメソッドを使用することで、その他の場合にはコンパイラによって実行されるコンパイル時の例外確認を効果的にバイパスできます。Constructor.newInstance
メソッドはこの問題を回避するため、コンストラクタからスローされる任意の例外を、(チェックされる) InvocationTargetException
内にラップします。
IllegalAccessException
- クラスまたはその引数なしのコンストラクタにアクセスできない場合。InstantiationException
- この Class
が abstract クラス、インタフェース、配列クラス、プリミティブ型、または void を表す場合、クラスが引数なしのコンストラクタを保持しない場合、あるいはインスタンスの生成がほかの理由で失敗した場合。ExceptionInInitializerError
- このメソッドによる初期化に失敗した場合。SecurityException
- セキュリティーマネージャー s が存在し、次の条件のどれかが満たされる場合:
s.checkMemberAccess(this, Member.PUBLIC)
の呼び出し時に、このクラスの新しいインスタンスの作成が拒否される
s.checkPackageAccess()
の呼び出しがこのクラスのパッケージへのアクセスを許可しない
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
値NullPointerException
- 指定された Class パラメータが null の場合。public boolean isInterface()
Class
オブジェクトがインタフェース型を表すかどうかを判定します。true
、そうでない場合は false
。public boolean isArray()
Class
オブジェクトが配列クラスを表すかどうかを判定します。true
、そうでない場合は false
。public boolean isPrimitive()
Class
オブジェクトがプリミティブ型を表すかどうかを判定します。
8 つの Java のプリミティブ型と void を表す、9 つの定義済み Class
オブジェクトがあります。これらは Java 仮想マシンが作成し、該当するプリミティブ型と同じ名前を持ちます。つまり、boolean
、byte
、char
、short
、int
、long
、float
、および double
です。
これらのオブジェクトには、public static final 変数を使う方法によってのみアクセスできます。また、このメソッドが true
を返すのは、これらの 9 つの Class
オブジェクトに限定されます。
Boolean.TYPE
, Character.TYPE
, Byte.TYPE
, Short.TYPE
, Integer.TYPE
, Long.TYPE
, Float.TYPE
, Double.TYPE
, Void.TYPE
public boolean isAnnotation()
Class
オブジェクトが注釈型を表す場合は true を返します。すべての注釈型はインタフェースでもあるので、このメソッドが true を返すと、isInterface()
も true を返します。true
、それ以外の場合は false
public boolean isSynthetic()
true
を返し、そうでない場合は false
を返します。true
。public String getName()
Class
オブジェクトが表すエンティティー (クラス、インタフェース、配列クラス、プリミティブ型、または void) の名前を、String
として返します。
『Java™ 言語仕様』で規定されているように、このクラスオブジェクトが配列型ではない参照型を表す場合は、クラスのバイナリ名が返されます。
このクラスオブジェクトがプリミティブ型または void を表す場合、返される名前はプリミティブ型または void に対応する Java 言語キーワードと等価な String
です。
このクラスオブジェクトが配列のクラスを表す場合、名前の内部形式は、配列の入れ子の深さを表す 1 つ以上の [
文字、要素のタイプの名前という順序で構成されます。要素のタイプの名前のエンコーディングは、次のとおりです。
要素のタイプ エンコーディング boolean 型 Z byte B char C class または interface Lclassname; double D float F int I long J short S
クラス名またはインタフェース名の classname は、上記の例のようにクラスのバイナリ名で指定されます。
例
String.class.getName() returns "java.lang.String" byte.class.getName() returns "byte" (new Object[3]).getClass().getName() returns "[Ljava.lang.Object;" (new int[3][4][5][6][7][8][9]).getClass().getName() returns "[[[[[[[I"
public ClassLoader getClassLoader()
セキュリティーマネージャーが存在し、呼び出し側のクラスローダーが null でなく、クラスローダーが必要とされるクラスのクラスローダーの上位ローダでもない場合、このメソッドはセキュリティーマネージャーの checkPermission
メソッドを RuntimePermission("getClassLoader")
のアクセス権を使って呼び出すことによってクラスのクラスローダーに問題なくアクセスできることを保証します。
このオブジェクトがプリミティブ型または void を表す場合は、null が返されます。
SecurityException
- セキュリティーマネージャーが存在し、その checkPermission
メソッドがクラスのクラスローダーへのアクセスを拒否する場合。ClassLoader
, SecurityManager.checkPermission(java.security.Permission)
, RuntimePermission
public TypeVariable<Class<T>>[] getTypeParameters()
GenericDeclaration
オブジェクトによって表されるジェネリック宣言で宣言された型変数を表す TypeVariable
オブジェクトの配列を宣言順に返します。基になるジェネリック宣言で型変数が宣言されていない場合は、長さ 0 の配列が返されます。getTypeParameters
、インタフェース: GenericDeclaration
TypeVariable
オブジェクトの配列GenericSignatureFormatError
- このジェネリック宣言のジェネリックシグニチャーが『Java™ 仮想マシン仕様』で規定される書式に適合しない場合public Class<? super T> getSuperclass()
Class
で表されるエンティティー (クラス、インタフェース、プリミティブ型、または void) のスーパークラスを表す Class
を返します。この Class
が、Object
クラス、インタフェース、プリミティブ型、または void を表す場合、null が返されます。このオブジェクトが配列クラスを表す場合は、Object
クラスを表す Class
オブジェクトが返されます。public Type getGenericSuperclass()
Class
で表されるエンティティー (クラス、インタフェース、プリミティブ型、または void) の直接のスーパークラスを表す Type
を返します。
スーパークラスがパラメータ化された型の場合、返される Type
オブジェクトは、ソースコードで使用される実際の型パラメータを反映しなければいけません。スーパークラスを表すパラメータ化された型は、以前作成されていなかった場合に作成されます。パラメータ化された型の作成プロセスのセマンティクスについては、ParameterizedType
の宣言を参照してください。この Class
が、Object
クラス、インタフェース、プリミティブ型、または void を表す場合、null が返されます。このオブジェクトが配列クラスを表す場合は、Object
クラスを表す Class
オブジェクトが返されます。
GenericSignatureFormatError
- ジェネリッククラスのシグニチャーが『Java™ 仮想マシン仕様』で規定される書式に適合しない場合TypeNotPresentException
- ジェネリックスーパークラスが、存在しない型宣言を参照する場合MalformedParameterizedTypeException
- ジェネリックスーパークラスが、何らかの理由によりインスタンス化できないパラメータ化された型を参照する場合public Package getPackage()
クラスに付属するマニフェストで情報が定義された場合と、クラスローダーがマニフェストの属性を持つパッケージインスタンスを生成した場合にだけ、パッケージはバージョンと仕様の属性を持ちます。
public Class<?>[] getInterfaces()
このオブジェクトがクラスを表す場合、戻り値は、クラスによって実装されるすべてのインタフェースを表すオブジェクトを格納している配列です。配列内のインタフェースオブジェクトの順序は、このオブジェクトが表すクラスを宣言する implements
節内のインタフェース名の順序に一致します。たとえば、
class Shimmer implements FloorWax, DessertTopping { ... }
という宣言があり、s
の値が Shimmer
のインスタンスであるとします。
s.getClass().getInterfaces()[0]
という式の値は FloorWax
インタフェースを表す Class
オブジェクトであり、
s.getClass().getInterfaces()[1]
という式の値は、DessertTopping
インタフェースを表す Class
オブジェクトです。
このオブジェクトがインタフェースを表す場合、そのインタフェースによって拡張されたすべてのインタフェースを表すオブジェクトが配列内に入ります。配列内のインタフェースオブジェクトの順序は、このオブジェクトが表すインタフェースを宣言する extends
節内のインタフェース名の順序に一致します。
このオブジェクトがインタフェースを実装しないクラスまたはインタフェースを表す場合、このメソッドは長さが 0 の配列を返します。
このオブジェクトがプリミティブ型または void を表す場合、このメソッドは長さが 0 の配列を返します。
public Type[] getGenericInterfaces()
Type
を返します。
スーパーインタフェースがパラメータ化された型の場合、返される Type
オブジェクトは、ソースコードで使用される実際の型パラメータを反映しなければいけません。スーパーインタフェースを表すパラメータ化された型は、以前作成されていなかった場合に作成されます。パラメータ化された型の作成プロセスのセマンティクスについては、ParameterizedType
の宣言を参照してください。
このオブジェクトがクラスを表す場合、戻り値は、クラスによって実装されるすべてのインタフェースを表すオブジェクトを格納している配列です。配列内のインタフェースオブジェクトの順序は、このオブジェクトが表すクラスを宣言する implements
節内のインタフェース名の順序に一致します。配列クラスの場合、Cloneable
インタフェースと Serializable
インタフェースはその順序で返されます。
このオブジェクトがインタフェースを表す場合、そのインタフェースによって直接拡張されたすべてのインタフェースを表すオブジェクトが配列内に入ります。配列内のインタフェースオブジェクトの順序は、このオブジェクトが表すインタフェースを宣言する extends
節内のインタフェース名の順序に一致します。
このオブジェクトがインタフェースを実装しないクラスまたはインタフェースを表す場合、このメソッドは長さが 0 の配列を返します。
このオブジェクトがプリミティブ型または void を表す場合、このメソッドは長さが 0 の配列を返します。
GenericSignatureFormatError
- ジェネリッククラスのシグニチャーが『Java™ 仮想マシン仕様』で規定される書式に適合しない場合TypeNotPresentException
- ジェネリックスーパーインタフェースのどれかが、存在しない型宣言を参照する場合MalformedParameterizedTypeException
- ジェネリックスーパーインタフェースのどれかが、何らかの理由によりインスタンス化できないパラメータ化された型を参照する場合public Class<?> getComponentType()
Class
を返します。このクラスが配列クラスを表さない場合、このメソッドは null を返します。Class
Array
public int getModifiers()
public
、protected
、private
、final
、static
、abstract
、および interface
用の Java 仮想マシンの定数から構成されます。これらは、Modifier
クラスのメソッドを使ってデコードしなければいけません。
基本となるクラスが配列クラスの場合、public
、private
、および protected
の各修飾子はコンポーネント型の修飾子と同じです。この Class
がプリミティブ型または void の場合、public
の各修飾子は常に true
で、protected
および private
修飾子は常に false
です。このオブジェクトが配列クラス、プリミティブ型、または void を表す場合、final
修飾子は常に true
で、そのインタフェース修飾子は常に false
です。その他の修飾子の値は、この仕様では判定されません。
修飾子の符号化は、『Java Virtual Machine 仕様』の表 4.1 で定義しています。
int
Modifier
public Object[] getSigners()
public Method getEnclosingMethod()
Class
オブジェクトが、メソッド内のローカルクラスまたは匿名クラスを表す場合は、基本となるクラスを直接囲むメソッドを表す Method
オブジェクトを返します。それ以外の場合は null
を返します。
特に、基本となるクラスが、型宣言、インスタンス初期化子、または静的初期化子により直接囲まれるローカルクラスまたは匿名クラスである場合、このメソッドは null
を返します。null
。public Constructor<?> getEnclosingConstructor()
Class
オブジェクトが、コンストラクタ内のローカルクラスまたは匿名クラスを表す場合は、基本となるクラスを直接囲むコンストラクタを表す Constructor
オブジェクトを返します。それ以外の場合は null
を返します。特に、基本となるクラスが、型宣言、インスタンス初期化子、または静的初期化子により直接囲まれるローカルクラスまたは匿名クラスである場合、このメソッドは null
を返します。null
。public Class<?> getDeclaringClass()
Class
オブジェクトが表すクラスまたはインタフェースが別のクラスのメンバーの場合は、それが宣言されたクラスを表す Class
オブジェクトを返します。このクラスまたはインタフェースがほかのクラスのメンバーでない場合は、null を返します。この Class
オブジェクトが配列クラス、プリミティブ型、または void を表す場合、このメソッドは null を返します。public Class<?> getEnclosingClass()
null
を返します。public String getSimpleName()
配列の単純名は、「[]」が付加されたコンポーネント型の単純名です。特に、コンポーネント型が匿名である配列の単純名は、「[]」です。
public String getCanonicalName()
null
。public boolean isAnonymousClass()
true
を返します。true
。public boolean isLocalClass()
true
を返します。true
。public boolean isMemberClass()
true
を返します。true
。public Class<?>[] getClasses()
Class
オブジェクトが表すクラスのメンバーである、すべての public クラスおよびインタフェースを表す Class
オブジェクトを格納している配列を返します。スーパークラスから継承した public クラスおよびインタフェースのメンバー、ならびにクラスが宣言した public クラスとインタフェースのメンバーも含まれます。この Class
オブジェクトが public メンバークラスやインタフェースを持たない場合や、プリミティブ型、配列クラス、または void を表す場合には、長さが 0 の配列を返します。Class
オブジェクトの配列SecurityException
- セキュリティーマネージャー s が存在し、次の条件のどれかが満たされる場合:
s.checkMemberAccess(this, Member.PUBLIC)
メソッドの呼び出し時に、このクラス内のクラスへのアクセスが拒否される
s.checkPackageAccess()
の呼び出しがこのクラスのパッケージへのアクセスを許可しない
public Field[] getFields() throws SecurityException
Class
オブジェクトが表すクラスまたはインタフェースのすべてのアクセス可能な public フィールドをリフレクトする、Field
オブジェクトを保持している配列を返します。返された配列内の要素は、ソートされていたり、特定の順序になっていたりすることはありません。クラスまたはインタフェースにアクセス可能な public フィールドがない場合や、クラスまたはインタフェースが配列クラス、プリミティブ型、または void を表す場合は、長さが 0 の配列を返します。
特に、この Class
オブジェクトがクラスを表す場合、このメソッドはこのクラスとそのすべてのスーパークラスの public フィールドを返します。この Class
オブジェクトがインタフェースを表す場合は、このインタフェースとすべてのスーパーインタフェースのフィールドを返します。
このメソッドは、配列クラスの暗黙的な長さフィールドをリフレクトしません。ユーザーコードで配列を操作するには、Array
クラスのメソッドを使う必要があります。
『Java 言語仕様』のセクション 8.2 と 8.3 を参照してください。
Field
オブジェクトの配列SecurityException
- セキュリティーマネージャー s が存在し、次の条件のどれかが満たされる場合:
s.checkMemberAccess(this, Member.PUBLIC)
の呼び出し時に、このクラス内のフィールドへのアクセスが拒否される
s.checkPackageAccess()
の呼び出しがこのクラスのパッケージへのアクセスを許可しない
public Method[] getMethods() throws SecurityException
Class
オブジェクトが表すクラスまたはインタフェースのすべての public メンバーメソッドをリフレクトする Method
オブジェクトを格納している配列を返します。クラスまたはインタフェースが宣言したもの、およびスーパークラスやスーパーインタフェースから継承されたものも含まれます。配列クラスは、Object
クラスから継承されたすべての (public) メンバーメソッドを返します。返された配列内の要素は、ソートされていたり、特定の順序になっていたりすることはありません。この Class
オブジェクトが public メンバーメソッドがないクラスまたはインタフェースを表す場合や、プリミティブ型または void を表す場合は、このメソッドは長さが 0 の配列を返します。
クラス初期化メソッド <clinit>
は、返された配列にはありません。クラスが同じパラメータ型を持つ複数の public メンバーメソッドを宣言する場合、それらのメソッドは、すべて返された配列にあります。
『Java 言語仕様』のセクション 8.2 と 8.4 を参照してください。
Method
オブジェクトの配列SecurityException
- セキュリティーマネージャー s が存在し、次の条件のどれかが満たされる場合:
s.checkMemberAccess(this, Member.PUBLIC)
の呼び出し時に、このクラス内のメソッドへのアクセスが拒否される
s.checkPackageAccess()
の呼び出しがこのクラスのパッケージへのアクセスを許可しない
public Constructor<?>[] getConstructors() throws SecurityException
Class
オブジェクトが表すクラスのすべての public コンストラクタをリフレクトする Constructor
オブジェクトを格納している配列を返します。クラスに public コンストラクタがない場合、クラスが配列クラスの場合、またはクラスがプリミティブ型または void をリフレクトする場合には、長さが 0 の配列を返します。
このメソッドは Constructor<T>
オブジェクトの配列 (このクラスからのコンストラクタの配列) を返しますが、このメソッドの戻り値の型は Constructor<?>[]
であり、予想される Constructor<T>[]
ではありません。この情報の少ない戻り値の型は、このメソッドから返されたあとで必要になり、この配列はさまざまなクラスの Constructor
オブジェクトを保持するよう変更されることがあります。これは、Constructor<T>[]
の型保証に違反します。Constructor
オブジェクトの配列SecurityException
- セキュリティーマネージャー s が存在し、次の条件のどれかが満たされる場合:
s.checkMemberAccess(this, Member.PUBLIC)
の呼び出し時に、このクラス内のコンストラクタへのアクセスが拒否される
s.checkPackageAccess()
の呼び出しがこのクラスのパッケージへのアクセスを許可しない
public Field getField(String name) throws NoSuchFieldException, SecurityException
Class
オブジェクトが表すクラスまたはインタフェースの、指定された public メンバーフィールドをリフレクトする Field
オブジェクトを返します。name
パラメータは、要求されるフィールドに単純名を指定する String
です。
リフレクトされるフィールドは、次のアルゴリズムで決定されます。ここでは、このオブジェクトが表すクラスを C とします。
NoSuchFieldException
がスローされます。『Java 言語仕様』のセクション 8.2 と 8.3 を参照してください。
name
- フィールド名name
で指定されたこのクラスの Field
オブジェクトNoSuchFieldException
- 指定された名前のフィールドが見つからない場合。NullPointerException
- name
が null
である場合SecurityException
- セキュリティーマネージャー s が存在し、次の条件のどれかが満たされる場合:
s.checkMemberAccess(this, Member.PUBLIC)
の呼び出し時に、フィールドへのアクセスが拒否される
s.checkPackageAccess()
の呼び出しがこのクラスのパッケージへのアクセスを許可しない
public Method getMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException
Class
オブジェクトが表すクラスまたはインタフェースの、指定された public メンバーメソッドをリフレクトする Method
オブジェクトを返します。name
パラメータは、要求されるメソッドに単純名を指定する String
です。parameterTypes
パラメータは、メソッドの仮パラメータ型を宣言された順序で識別する Class
オブジェクトの配列です。parameterTypes
が null
の場合は、空の配列のように扱われます。
name
が「<init>
」または「<clinit>
」の場合、NoSuchMethodException
が発行されます。そうでない場合、リフレクトされるメソッドは、次のアルゴリズムで指定されます。ここでは、このオブジェクトが表すクラスを C とします。
Java 言語は、署名は同じでも戻り値の型が異なる複数のメソッドを宣言するクラスを禁止しますが、Java 仮想マシンはこれを禁止しないため、クラス内に一致するメソッドが複数存在することがあります。仮想マシンのこのような柔軟性を使用して、さまざまな言語機能を実装することができます。たとえば、共変戻り値はブリッジメソッドで実装できます。このブリッジメソッドとオーバーライドされるメソッドは同じ署名を持ちますが、戻り値の型はさまざまです。
『Java 言語仕様』のセクション 8.2 と 8.4 を参照してください。
name
- メソッドの名前parameterTypes
- パラメータのリストname
と parameterTypes
に一致する Method
オブジェクトNoSuchMethodException
- 一致するメソッドが見つからない場合、または名前が「<init>」または「<clinit>」の場合。NullPointerException
- name
が null
である場合SecurityException
- セキュリティーマネージャー s が存在し、次の条件のどれかが満たされる場合:
s.checkMemberAccess(this, Member.PUBLIC)
の呼び出し時に、メソッドへのアクセスが拒否される
s.checkPackageAccess()
の呼び出しがこのクラスのパッケージへのアクセスを許可しない
public Constructor<T> getConstructor(Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException
Class
オブジェクトが表すクラスの指定された public コンストラクタをリフレクトする Constructor
オブジェクトを返します。parameterTypes
パラメータは、コンストラクタの仮パラメータ型を宣言された順序で識別する Class
オブジェクトの配列です。
この Class
オブジェクトが非 static コンテキストに宣言された内部クラスを表す場合、仮パラメータ型には最初のパラメータとして明示的な囲むインスタンスが含まれます。
リフレクトするコンストラクタは、parameterTypes
に指定された型と一致する仮パラメータ型を持つこの Class
オブジェクトが表すクラスの public コンストラクタです。
parameterTypes
- パラメータ配列parameterTypes
と一致する public コンストラクタの Constructor
オブジェクトNoSuchMethodException
- 一致するメソッドが見つからない場合。SecurityException
- セキュリティーマネージャー s が存在し、次の条件のどれかが満たされる場合:
s.checkMemberAccess(this, Member.PUBLIC)
の呼び出し時に、コンストラクタへのアクセスが拒否される
s.checkPackageAccess()
の呼び出しがこのクラスのパッケージへのアクセスを許可しない
public Class<?>[] getDeclaredClasses() throws SecurityException
Class
オブジェクトが表すクラスのメンバーとして宣言されたすべてのクラスおよびインタフェースをリフレクトする Class
オブジェクトの配列を返します。これには、クラスが宣言した public、protected、デフォルト (package) アクセス、および private クラスとインタフェースは含まれますが、継承クラスとインタフェースは含まれません。このメソッドは、クラスがメンバーとしてクラスまたはインタフェースを宣言していない場合や、この Class
オブジェクトがプリミティブ型、配列クラス、または void を表す場合には、長さが 0 の配列を返します。Class
オブジェクトの配列SecurityException
- セキュリティーマネージャー s が存在し、次の条件のどれかが満たされる場合:
s.checkMemberAccess(this, Member.DECLARED)
の呼び出し時に、このクラス内で宣言されたクラスへのアクセスが拒否される
s.checkPackageAccess()
の呼び出しがこのクラスのパッケージへのアクセスを許可しない
public Field[] getDeclaredFields() throws SecurityException
Class
オブジェクトが表すクラスまたはインタフェースによって宣言されたすべてのフィールドをリフレクトする Field
オブジェクトの配列を返します。これには、public、protected、デフォルト (package) アクセス、および private フィールドは含まれますが、継承フィールドは含まれません。返された配列内の要素は、ソートされていたり、特定の順序になっていたりすることはありません。このメソッドは、クラスまたはインタフェースがフィールドを宣言しない場合や、この Class
オブジェクトがプリミティブ型、配列クラス、または void を表す場合には、長さが 0 の配列を返します。
『Java 言語仕様』のセクション 8.2 と 8.3 を参照してください。
Field
オブジェクトの配列SecurityException
- セキュリティーマネージャー s が存在し、次の条件のどれかが満たされる場合:
s.checkMemberAccess(this, Member.DECLARED)
の呼び出し時に、このクラス内で宣言されたフィールドへのアクセスが拒否される
s.checkPackageAccess()
の呼び出しがこのクラスのパッケージへのアクセスを許可しない
public Method[] getDeclaredMethods() throws SecurityException
Class
オブジェクトが表すクラスまたはインタフェースによって宣言されたすべてのメソッドをリフレクトする Method
オブジェクトの配列を返します。これには、public、protected、デフォルト (package) アクセス、および private メソッドは含まれますが、継承メソッドは含まれません。返された配列内の要素は、ソートされていたり、特定の順序になっていたりすることはありません。このメソッドは、クラスまたはインタフェースがメソッドを宣言しない場合や、この Class
オブジェクトがプリミティブ型、配列クラス、または void を表す場合は、長さが 0 の配列を返します。クラス初期化メソッド <clinit>
は、返された配列にはありません。クラスが同じパラメータ型を持つ複数の public メンバーメソッドを宣言する場合、それらのメソッドは、すべて返された配列にあります。
『Java 言語仕様』のセクション 8.2 を参照してください。
Method
オブジェクトの配列SecurityException
- セキュリティーマネージャー s が存在し、次の条件のどれかが満たされる場合:
s.checkMemberAccess(this, Member.DECLARED)
の呼び出し時に、このクラス内で宣言されたメソッドへのアクセスが拒否される
s.checkPackageAccess()
の呼び出しがこのクラスのパッケージへのアクセスを許可しない
public Constructor<?>[] getDeclaredConstructors() throws SecurityException
Class
オブジェクトが表すクラスによって宣言されたすべてのコンストラクタをリフレクトする Constructor
オブジェクトの配列を返します。これらは、public、protected、デフォルト (package) アクセス、および private コンストラクタです。返された配列内の要素は、ソートされていたり、特定の順序になっていたりすることはありません。クラスがデフォルトのコンストラクタを持つ場合、このコンストラクタは返された配列にあります。このメソッドは、この Class
オブジェクトがインタフェース、プリミティブ型、配列クラス、または void を表す場合には長さが 0 の配列を返します。
『Java 言語仕様』のセクション 8.2 を参照してください。
Constructor
オブジェクトの配列SecurityException
- セキュリティーマネージャー s が存在し、次の条件のどれかが満たされる場合:
s.checkMemberAccess(this, Member.DECLARED)
の呼び出し時に、このクラス内で宣言されたコンストラクタへのアクセスが拒否される
s.checkPackageAccess()
の呼び出しがこのクラスのパッケージへのアクセスを許可しない
public Field getDeclaredField(String name) throws NoSuchFieldException, SecurityException
Class
オブジェクトが表すクラスまたはインタフェースの、指定された宣言されたフィールドをリフレクトする Field
オブジェクトを返します。name
パラメータは、要求されるフィールドに単純名を指定する String
です。このメソッドが配列クラスの length
フィールドをリフレクトすることはありません。name
- フィールドの名前Field
オブジェクトNoSuchFieldException
- 指定された名前のフィールドが見つからない場合。NullPointerException
- name
が null
である場合SecurityException
- セキュリティーマネージャー s が存在し、次の条件のどれかが満たされる場合:
s.checkMemberAccess(this, Member.DECLARED)
の呼び出し時に、宣言されたフィールドへのアクセスが拒否される
s.checkPackageAccess()
の呼び出しがこのクラスのパッケージへのアクセスを許可しない
public Method getDeclaredMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException
Class
オブジェクトが表すクラスまたはインタフェースの、指定された宣言されたメソッドをリフレクトする Method
オブジェクトを返します。name
パラメータは、要求されたメソッドの単純名を指定する String
です。parameterTypes
パラメータは、メソッドの仮パラメータ型を宣言順に識別する Class
オブジェクトの配列です。同じパラメータ型を持つ複数のメソッドが 1 つのクラスで宣言され、そうしたメソッドの 1 つがそれ以外のどれよりも明確な戻り値の型を持つ場合には、そのメソッドが返されます。そうでない場合は、メソッドの 1 つが任意に選択されます。name が「<init>」または「<clinit>」の場合、NoSuchMethodException
が発行されます。name
- メソッドの名前parameterTypes
- パラメータ配列Method
オブジェクトNoSuchMethodException
- 一致するメソッドが見つからない場合。NullPointerException
- name
が null
である場合SecurityException
- セキュリティーマネージャー s が存在し、次の条件のどれかが満たされる場合:
s.checkMemberAccess(this, Member.DECLARED)
の呼び出し時に、宣言されたメソッドへのアクセスが拒否される
s.checkPackageAccess()
の呼び出しがこのクラスのパッケージへのアクセスを許可しない
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException
Class
オブジェクトが表すクラスまたはインタフェースの指定されたコンストラクタをリフレクトする Constructor
オブジェクトを返します。parameterTypes
パラメータは、コンストラクタの仮パラメータ型を宣言された順序で識別する Class
オブジェクトの配列です。
この Class
オブジェクトが非 static コンテキストに宣言された内部クラスを表す場合、仮パラメータ型には最初のパラメータとして明示的な囲むインスタンスが含まれます。parameterTypes
- パラメータ配列Constructor
オブジェクトNoSuchMethodException
- 一致するメソッドが見つからない場合。SecurityException
- セキュリティーマネージャー s が存在し、次の条件のどれかが満たされる場合:
s.checkMemberAccess(this, Member.DECLARED)
の呼び出し時に、宣言されたコンストラクタへのアクセスが拒否される
s.checkPackageAccess()
の呼び出しがこのクラスのパッケージへのアクセスを許可しない
public InputStream getResourceAsStream(String name)
ClassLoader.getSystemResourceAsStream(java.lang.String)
に委任します。
委譲の前に、このアルゴリズムを使って指定されたリソース名から絶対リソース名が構築されます。
name
が '/'
('\u002f') で始まっている場合、リソースの絶対名は、name
の '/'
のあとの部分になります。
modified_package_name/name
ここで、modified_package_name
は、このオブジェクトのパッケージ名の '.'
('\u002e') を '/'
で置き換えたものです。
name
- 要求されるリソースの名前InputStream
オブジェクト。この名前のリソースが見つからない場合は null
NullPointerException
- name
が null
である場合public URL getResource(String name)
ClassLoader.getSystemResource(java.lang.String)
に委任します。
委譲の前に、このアルゴリズムを使って指定されたリソース名から絶対リソース名が構築されます。
name
が '/'
('\u002f') で始まっている場合、リソースの絶対名は、name
の '/'
のあとの部分になります。
modified_package_name/name
ここで、modified_package_name
は、このオブジェクトのパッケージ名の '.'
('\u002e') を '/'
で置き換えたものです。
name
- 要求されるリソースの名前URL
オブジェクト。この名前のリソースが見つからない場合は null
public ProtectionDomain getProtectionDomain()
ProtectionDomain
を返します。セキュリティーマネージャーがインストールされていると、このメソッドはまずセキュリティーマネージャーの checkPermission
メソッドを RuntimePermission("getProtectionDomain")
アクセス権を使って呼び出すことによって ProtectionDomain
を問題なく取得できることを確認します。SecurityException
- セキュリティーマネージャーが存在し、その checkPermission
メソッドが ProtectionDomain の取得を許可しない場合。ProtectionDomain
, SecurityManager.checkPermission(java.security.Permission)
, RuntimePermission
public boolean desiredAssertionStatus()
これは JRE 自体で使用するためのメソッドであるため、プログラマがこのメソッドを必要とすることはほとんどありません(このメソッドにより、初期化時にアサーションが有効にするかどうかをクラスが判別できる)。指定されたクラスの初期化時に、このメソッドが、指定されたクラスに関連付けられた実際のアサーションステータスを返すとは限らないことに留意してください。
ClassLoader.setClassAssertionStatus(java.lang.String, boolean)
, ClassLoader.setPackageAssertionStatus(java.lang.String, boolean)
, ClassLoader.setDefaultAssertionStatus(boolean)
public boolean isEnum()
public T[] getEnumConstants()
public T cast(Object obj)
Class
オブジェクトが表すクラスまたはインタフェースにオブジェクトをキャストします。obj
- キャストされるオブジェクトClassCastException
- オブジェクトが null 以外であり、型 T に割り当てられない場合。public <U> Class<? extends U> asSubclass(Class<U> clazz)
Class
オブジェクトをキャストします。キャストが有効であることを確認し、有効でない場合は ClassCastException
をスローします。このメソッドが成功すると、このクラスオブジェクトへの参照を返します。
このメソッドは、受け取る側の Class
オブジェクトを制限する API に渡すために、クライアントが Class
オブジェクトの型をナロー変換する必要がある場合に役立ちます。(ジェネリック型はイレイジャーによって実装されるので) キャストの正確性を実行時に確認することはできないため、キャストによってコンパイル時の警告が生成されます。
Class
オブジェクト。ClassCastException
- この Class
オブジェクトが指定されたクラスのサブクラスを表さない場合 (「サブクラス」はクラス自体を含む)。public <A extends Annotation> A getAnnotation(Class<A> annotationClass)
AnnotatedElement
getAnnotation
、インタフェース: AnnotatedElement
annotationClass
- 注釈型に対応する Class オブジェクトNullPointerException
- 指定された注釈クラスが null の場合public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
AnnotatedElement
isAnnotationPresent
、インタフェース: AnnotatedElement
annotationClass
- 注釈型に対応する Class オブジェクトNullPointerException
- 指定された注釈クラスが null の場合public Annotation[] getAnnotations()
AnnotatedElement
getAnnotations
、インタフェース: AnnotatedElement
public Annotation[] getDeclaredAnnotations()
AnnotatedElement
getDeclaredAnnotations
、インタフェース: AnnotatedElement
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.