- 型パラメータ:
T
- このClass
オブジェクトでモデル化されるクラスの型。 たとえば、String.class
の型はClass<String>
である。 モデル化するクラスが不明な場合はClass<?>
を使用する。
- すべての実装されたインタフェース:
Serializable
,Constable
,TypeDescriptor
,TypeDescriptor.OfField<Class<?>>
,AnnotatedElement
,GenericDeclaration
,Type
Class
クラスのインスタンスは、実行中のJavaアプリケーションのクラスおよびインタフェースを表します。 enumクラスとrecordクラスはクラスの一種で、annotationインタフェースはインタフェースの一種です。 同様にどの配列も、同じ要素のタイプおよび次元数を持つすべての配列により共有されるClass
オブジェクトとしてリフレクトされるクラスに属します。 プリミティブJava型(boolean
、byte
、char
、short
、 int
、long
、float
、およびdouble
)やキーワードvoid
も、Class
オブジェクトとして表されます。
Class
には、publicコンストラクタはありません。 かわりに、Class
オブジェクトは、次のいずれかのメソッドの呼出しによってclass
ファイルのバイトからクラスが導出されると、Java Virtual Machineによって自動的に構築されます:
-
ClassLoader::defineClass
-
java.lang.invoke.MethodHandles.Lookup::defineClass
-
java.lang.invoke.MethodHandles.Lookup::defineHiddenClass
クラスClass
のメソッドでは、クラスまたはインタフェースの多くの特性が公開されます。 ほとんどの特性は、クラス・ローダーがJava Virtual Machineに渡したclass
ファイル、またはLookup::defineClass
またはLookup::defineHiddenClass
に渡されたclass
ファイルから導出されます。 いくつかの特性は、getModule()
によって返されたモジュールなど、実行時のクラス・ロード環境によって決まります。
以下の例では、Class
オブジェクトを使ってオブジェクトのクラス名を出力します。
void printClassName(Object obj) {
System.out.println("The class of " + obj +
" is " + obj.getClass().getName());
}
void
の場合)のClass
オブジェクトを取得することもできます。 たとえば、
System.out.println("The name of class Foo is: "+Foo.class.getName());
クラスClass
の一部のメソッドでは、Javaソース・コードのクラスまたはインタフェースの宣言が別の宣言で「囲み」だったかどうかが公開されます。 他のメソッドは、クラスまたはインタフェースが「ネスト」にある状況を表します。 「ネスト」は、同じランタイム・パッケージ内のクラスとインタフェースのセットで、private
メンバーへの相互のアクセスを可能にします。 クラスおよびインタフェースは、nestmatesと呼ばれます。 1つのネストしたウィンドウは「ホストのネスト」の役割を果たし、他のネストしたコンテンツを列挙します。ネストしたホストとして各ネストします。 ネストしたクラス(ホストを含む)に属するクラスとインタフェースは、class
ファイルが生成されたときに判別されます。たとえば、Javaコンパイラでは通常、最上位クラスがネストのホストとして記録されます。ここでは、宣言が最上位クラス宣言で囲まれたクラスとインタフェースが他のメンバーになります。
Lookup::defineHiddenClass
の起動によって作成されるクラスまたはインタフェースは、hiddenクラスまたはインタフェースです。 enumクラスやrecordクラスを含むすべての種類のクラスは非表示クラスである可能性があります。注釈インタフェースを含むすべての種類のインタフェースは非表示インタフェースである可能性があります。 「非表示のクラスまたはインタフェースの名前」は「バイナリ名」ではありません。つまり、次のようになります:
- 非表示のクラスまたはインタフェースは、他のクラスおよびインタフェースの定数プールでは参照できません。
- 非表示のクラスまたはインタフェースは、「名目書式」で
Class::describeConstable
、ClassDesc::of
またはClassDesc::ofDescriptor
によって記述できません。 - 非表示のクラスまたはインタフェースは、
Class::forName
またはClassLoader::loadClass
では検出できません。
Class
クラスのメソッドによって公開される特性には関係ありません。
暗黙的に宣言されたクラス
従来、暗黙的に宣言されたクラスのソース・ファイル(HelloWorld.java
など)から始まるJavaコンパイラは、同じ名前のclass
ファイル(HelloWorld.class
)を作成します。ここで、そのclass
ファイルに格納されているクラスは、ソース・ファイルと class
ファイルのベース名と一致する "HelloWorld"
という名前です。 暗黙的に宣言されたクラス HelloWorld
のClass
オブジェクトの場合、nameおよび「タイプ名」を取得するメソッドは、"HelloWorld"
と等しい結果を返します。 このような暗黙的に宣言されたクラスの「単純名」は"HelloWorld"
で、「正規名」は"HelloWorld"
です。 - Java言語仕様を参照してください:
-
15.8.2 クラス・リテラル
- 導入されたバージョン:
- 1.0
- 関連項目:
-
ネストされたクラスのサマリー
インタフェースjava.lang.invoke.TypeDescriptorで宣言されたネストされたクラス/インタフェース
TypeDescriptor.OfField<F extends TypeDescriptor.OfField<F>>, TypeDescriptor.OfMethod<F extends TypeDescriptor.OfField<F>,
M extends TypeDescriptor.OfMethod<F, M>> -
メソッドのサマリー
修飾子と型メソッド説明このクラスの「アクセス・フラグ」の変更不可能なセットを返します(空の場合もあります)。Class
<?> コンポーネント型がこのClassによって記述されている配列型のClass
を返します。<U> Class
<? extends U> asSubclass
(Class<U> clazz) 指定されたクラス・オブジェクトによって表されるクラスのサブクラスを表すためにこのClass
オブジェクトをキャストします。このClass
オブジェクトが表すクラスまたはインタフェースにオブジェクトをキャストします。Class
<?> 配列型を説明する場合は、Class
のコンポーネント型を返します。それ以外の場合は、null
を返します。このインスタンスの名目記述子を返します(作成可能な場合)、作成できない場合は空のOptional
を返します。このClass
オブジェクトによって表されるエンティティ(クラス、インタフェース、配列クラス、プリミティブ型またはvoid
)の記述子文字列を返します。boolean
このメソッドの呼出し時にこのクラスを初期化する場合、クラスに割り当てられるアサーション・ステータスを返します。static Class
<?> 指定されたモジュール内の指定された「バイナリ名」を持つClass
を返します。static Class
<?> 指定された文字列名を持つクラスまたはインタフェースに関連付けられた、Class
オブジェクトを返します。static Class
<?> forName
(String name, boolean initialize, ClassLoader loader) 指定されたクラス・ローダーを使って、指定された文字列名を持つクラスまたはインタフェースに関連付けられたClass
オブジェクトを返します。static Class
<?> forPrimitiveName
(String primitiveName) 指定された名前の「プリミティブ型」に関連付けられているClass
オブジェクトを返します。Class
オブジェクトによって表されるエンティティのスーパーインタフェースを指定する型の使用を表すAnnotatedType
オブジェクトの配列を返します。Class
オブジェクトによって表されるエンティティのスーパークラスを指定する型の使用を表すAnnotatedType
オブジェクトを返します。<A extends Annotation>
AgetAnnotation
(Class<A> annotationClass) 存在する場合は、この要素の指定された型の注釈を返し、そうでない場合はnullを返します。この要素に存在する注釈を返します。<A extends Annotation>
A[]getAnnotationsByType
(Class<A> annotationClass) この要素に関連付けられている注釈を返します。「Java言語仕様」で定義されている基礎となるクラスの正規名を返します。Class<?>[]
このClass
オブジェクトが表すクラスのメンバーである、すべてのpublicクラスおよびインタフェースを表すClass
オブジェクトを格納している配列を返します。クラスのクラス・ローダーを返します。Class
<?> 配列のコンポーネント型を表すClass
を返します。getConstructor
(Class<?>... parameterTypes) このClass
オブジェクトが表すクラスの指定されたpublicコンストラクタをリフレクトするConstructor
オブジェクトを返します。Constructor<?>[]
このClass
オブジェクトが表すクラスのすべてのpublicコンストラクタをリフレクトするConstructor
オブジェクトを格納している配列を返します。<A extends Annotation>
AgetDeclaredAnnotation
(Class<A> annotationClass) 直接存在する場合は、この要素の指定された型の注釈を返し、そうでない場合はnullを返します。この要素に直接存在する注釈を返します。<A extends Annotation>
A[]getDeclaredAnnotationsByType
(Class<A> annotationClass) 直接存在するか間接的に存在する場合は、この要素の指定された型の注釈を返します。Class<?>[]
このClass
オブジェクトが表すクラスのメンバーとして宣言されたすべてのクラスおよびインタフェースをリフレクトするClass
オブジェクトの配列を返します。getDeclaredConstructor
(Class<?>... parameterTypes) このClass
オブジェクトで表されるクラスの指定されたコンストラクタを反映するConstructor
オブジェクトを返します。Constructor<?>[]
このClass
オブジェクトで表されるクラスによって暗黙的または明示的に宣言されたすべてのコンストラクタを反映するConstructor
オブジェクトの配列を返します。getDeclaredField
(String name) このClass
オブジェクトが表すクラスまたはインタフェースの、指定された宣言されたフィールドをリフレクトするField
オブジェクトを返します。Field[]
このClass
オブジェクトが表すクラスまたはインタフェースによって宣言されたすべてのフィールドをリフレクトするField
オブジェクトの配列を返します。getDeclaredMethod
(String name, Class<?>... parameterTypes) このClass
オブジェクトが表すクラスまたはインタフェースの、指定された宣言されたメソッドをリフレクトするMethod
オブジェクトを返します。Method[]
このClass
オブジェクトによって表されるクラスまたはインタフェースのすべての宣言されたメソッドをリフレクトするMethod
オブジェクトが格納された配列を返します。これには、public、protected、デフォルト(package)アクセスおよびprivateメソッドが含まれますが、継承されたメソッドは除外されます。Class
<?> このClass
オブジェクトが表すクラスまたはインタフェースが別のクラスのメンバーの場合は、それが宣言されたクラスを表すClass
オブジェクトを返します。Class
<?> 基本となるクラスを直接囲むクラスを返します。Constructor
<?> このClass
オブジェクトが、コンストラクタ内のローカル・クラスまたは匿名クラスを表す場合は、基本となるクラスを直接囲むコンストラクタを表すConstructor
オブジェクトを返します。このClass
オブジェクトが、メソッド内のローカル・クラスまたは匿名クラスを表す場合は、基本となるクラスを直接囲むメソッドを表すMethod
オブジェクトを返します。T[]
このenumクラスの要素を返します。このClassオブジェクトがenumクラスを表さない場合はnullを返します。このClass
オブジェクトが表すクラスまたはインタフェースの、指定されたpublicメンバー・フィールドをリフレクトするField
オブジェクトを返します。Field[]
このClass
オブジェクトが表すクラスまたはインタフェースのすべてのアクセス可能なpublicフィールドをリフレクトする、Field
オブジェクトを保持している配列を返します。Type[]
このClass
オブジェクトによって表されるクラスまたはインタフェースによって直接実装されるインタフェースを表すType
を返します。このClass
オブジェクトによって表されるエンティティ(クラス、インタフェース、プリミティブ型またはvoid)の直接スーパークラスを表すType
を返します。Class<?>[]
このClass
オブジェクトが表すクラスまたはインタフェースによって直接実装されたインタフェースを返します。このClass
オブジェクトが表すクラスまたはインタフェースの、指定されたpublicメンバー・メソッドをリフレクトするMethod
オブジェクトを返します。Method[]
このClass
オブジェクトによって表されるクラスまたはインタフェースのすべてのpublicメソッドをリフレクトするMethod
オブジェクトを格納している配列を返します。これには、クラスまたはインタフェースで宣言されたもの、およびスーパー・クラスやスーパー・インタフェースから継承されたものも含まれます。int
このクラスまたはインタフェースのJava言語修飾子を整数型に符号化して返します。このクラスまたはインタフェースがメンバーであるモジュールを返します。getName()
このClass
オブジェクトによって表されるエンティティ(クラス、インタフェース、配列クラス、プリミティブ型またはvoid)の名前を返します。Class
<?> このClass
オブジェクトが表すクラスまたはインタフェースが属する「ネスト」のネストされたホストを返します。Class<?>[]
このClass
オブジェクトが属する、ネストされたクラスまたはインタフェースのメンバーであるすべてのクラスおよびインタフェースを表すClass
オブジェクトを含む配列を返します。このクラスのパッケージを取得します。完全修飾パッケージ名を返します。Class<?>[]
このクラスまたはインタフェースがシールされている場合、このクラスまたはインタフェースの拡張または実装を許可された直接のサブインタフェースまたはサブクラスを表すClass
オブジェクトを含む配列を返します。このクラスのProtectionDomain
を返します。このレコード・クラスのすべてのレコード・コンポーネントを表すRecordComponent
オブジェクトの配列を返します。このクラスがレコード・クラスでない場合はnull
を返します。getResource
(String name) 指定された名前のリソースを探します。getResourceAsStream
(String name) 指定された名前のリソースを探します。Object[]
このクラスの署名者を取得します。ソース・コード内で指定されたとおり、基本となるクラスの単純名を返します。このClass
で表されるエンティティ(クラス、インタフェース、プリミティブ型またはvoid)の直接スーパークラスを表すClass
を返します。このクラスまたはインタフェースの名前の情報文字列を返します。TypeVariable<Class<T>>[]
GenericDeclaration
オブジェクトによって表されるジェネリック宣言で宣言された型変数を表すTypeVariable
オブジェクトの配列を宣言順に返します。boolean
このClass
オブジェクトが注釈インタフェースを表す場合はtrueを返します。boolean
isAnnotationPresent
(Class<? extends Annotation> annotationClass) 指定された型の注釈がこの要素に存在する場合はtrueを返し、そうでない場合はfalseを返します。boolean
基本となるクラスが匿名クラスである場合だけtrue
を返します。boolean
isArray()
このClass
オブジェクトが配列クラスを表すかどうかを判定します。boolean
isAssignableFrom
(Class<?> cls) このClass
オブジェクトが表すクラスまたはインタフェースが、指定されたClass
パラメータが表すクラスまたはインタフェースと等しいかどうか、あるいはそのスーパー・クラスあるいはスーパー・インタフェースであるかどうかを判定します。boolean
isEnum()
このクラスがソース・コードでenumとして宣言された場合だけtrueを返します。boolean
isHidden()
基礎となるクラスが非表示クラスである場合にのみ、true
を返します。boolean
isInstance
(Object obj) 指定されたObject
が、このClass
が表すオブジェクトと代入互換の関係にあるかどうかを判定します。boolean
このClass
オブジェクトがインタフェース・タイプを表すかどうかを判定します。boolean
基本となるクラスがローカル・クラスである場合だけtrue
を返します。boolean
基本となるクラスがメンバー・クラスである場合だけtrue
を返します。boolean
isNestmateOf
(Class<?> c) 指定されたClass
が、このClass
オブジェクトによって表されるクラスまたはインタフェースをネストしたものであるかどうかを判定します。boolean
このClass
オブジェクトがプリミティブ型またはvoidのどちらを表すかを決定します。boolean
isRecord()
このクラスがレコード・クラスである場合のみ、true
を返します。boolean
isSealed()
このClass
オブジェクトがシール済クラスまたはインタフェースを表す場合にのみ、true
を返します。boolean
このクラスに合成修飾子ビットが設定されている場合にのみ、true
を返します。非推奨。このメソッドは、チェック例外を含むnullaryコンストラクタによってスローされた例外をすべて伝播します。修飾子と型パラメータに関する情報を含む、このClass
を記述する文字列を返します。toString()
オブジェクトを文字列に変換します。
-
メソッドの詳細
-
toString
public String toString()オブジェクトを文字列に変換します。 文字列表現は、文字列"class"または"interface"の後にスペースが続き、getName
によって返される形式でクラスの名前が続きます。 このClass
オブジェクトがプリミティブ型を表す場合、このメソッドはプリミティブ型の名前を返します。 このClass
オブジェクトがvoidを表す場合は、「void」を返します。 このClass
オブジェクトが配列型を表す場合、このメソッドは"class"の後にgetName
を戻します。 -
toGenericString
public String toGenericString()修飾子と型パラメータに関する情報を含む、このClass
を記述する文字列を返します。 文字列は型修飾子(ある場合)のリストとしてフォーマットされ、その後に(プリミティブ型およびclass
、enum
、interface
、@interface
またはrecord
の場合は、必要に応じて空の文字列)型が続き、型名が続き、型パラメータの小文字区切りのリスト(ある場合)、型パラメータの非公式境界(ある場合)が続く形式です。 修飾子同士、およびいずれかの修飾子と型の種類との区切りには空白が1つ使用されます。 修飾子は正規の順序で返されます。 型パラメータがない場合、型パラメータのリストは省略されます。 配列型の場合、文字列は型名で始まり、その後に型の型パラメータ(ある場合)の山カッコで囲まれたカンマ区切りリストが続き、その後に配列のディメンションごとに1組の[]
文字のシーケンスが続きます。型の実行時表現に関する情報が生成されるため、元のソース・コードにない修飾子または元のソース・コードで不正な修飾子が存在する可能性があることに注意してください。
- 戻り値:
- 修飾子と型パラメータに関する情報を含む、この
Class
を記述する文字列 - 導入されたバージョン:
- 1.8
-
forName
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
というクラスが初期化されます。このメソッドが、スタック(例、JNIアタッチ・スレッドから直接コールされる場合)にコール元フレームがないコンテキストからコールされる場合、システム・クラス・ローダーが使用されます。
- パラメータ:
className
- クラスの「バイナリ名」または配列型を表す文字列- 戻り値:
- 指定された名前を持つクラスの
Class
オブジェクト。 - 例外:
LinkageError
- リンケージに失敗した場合ExceptionInInitializerError
- このメソッドによる初期化に失敗した場合ClassNotFoundException
- クラスが見つからなかった場合- Java言語仕様を参照してください:
-
12.2 クラスおよびインタフェースのロード
12.3 クラスおよびインタフェースのリンク
12.4 クラスおよびインタフェースの初期化
-
forName
public static Class<?> forName(String name, boolean initialize, ClassLoader loader) throws ClassNotFoundException 指定されたクラス・ローダーを使って、指定された文字列名を持つクラスまたはインタフェースに関連付けられたClass
オブジェクトを返します。 クラスまたはインタフェースに「バイナリ名」を指定すると、このメソッドはクラスまたはインタフェースを検索してロードしようとします。 クラスまたはインタフェースをロードする際には、指定されたクラス・ローダーが使用されます。 パラメータloader
がnull
の場合、クラスはブートストラップ・クラス・ローダーを介してロードされます。 クラスが初期化されるのは、initialize
パラメータがtrue
で、その初期化が以前に行われていない場合だけです。このメソッドは、プリミティブ型、void、非表示のクラスまたはインタフェース、または要素タイプが非表示のクラスまたはインタフェースである配列クラスを表す
Class
オブジェクトを取得するために使用できません。name
がプリミティブ型またはvoidを示す場合(例:I
)は、かわりにI
という名前のユーザー定義クラスを名前なしパッケージ内で検索しようとします。int
やlong
などの名前付きプリミティブ型のClass
オブジェクトを取得するには、forPrimitiveName(String)
を使用します。配列クラスに関連付けられた
Class
オブジェクトを取得するには、配列ネストの深さを表す1つ以上の'['
と、Class.getName()
で指定された「表」でエンコードされた要素タイプで構成されます。例
Class<?> threadClass = Class.forName("java.lang.Thread", false, currentLoader); Class<?> stringArrayClass = Class.forName("[Ljava.lang.String;", false, currentLoader); Class<?> intArrayClass = Class.forName("[[[I", false, currentLoader); // Class of int[][][] Class<?> nestedClass = Class.forName("java.lang.Character$UnicodeBlock", false, currentLoader); Class<?> fooClass = Class.forName("Foo", true, currentLoader);
forName(
N)
から返されたClass
オブジェクトに対するgetName()
へのコールは、Nを返します。forName("[L
N;")
をコールすると、Nという名前の要素タイプがロードされますが、initialize
パラメータの値に関係なく初期化されません。- APIのノート:
- このメソッドは、「Java言語仕様」のセクション12.2、12.3および12.4で指定されているロード、リンクまたは初期化に関連するエラーをスローします。 また、このメソッドは、リクエストされたクラスがその呼び出し元からアクセス可能かどうかをチェックしません。
- パラメータ:
name
- クラスの「バイナリ名」または配列クラスを表す文字列initialize
-true
でクラスが(リンクを意味)を初期化する場合。 「Java言語仕様」の12.4の項を参照してください。loader
- クラスのロード元である必要があるクラス・ローダー- 戻り値:
- 要求するクラスを表すクラス・オブジェクト
- 例外:
LinkageError
- リンケージに失敗した場合ExceptionInInitializerError
- このメソッドによる初期化に失敗した場合ClassNotFoundException
- 指定されたクラス・ローダーによってクラスが見つからなかった場合SecurityException
- セキュリティ・マネージャが存在し、loader
がnull
で、コール元のクラス・ローダーがnull
でなく、コール元にRuntimePermission
("getClassLoader")
がない場合- Java言語仕様を参照してください:
-
「12.2 クラスおよびインタフェースのロード」
「12.3 クラスおよびインタフェースのリンク」
「12.4 クラスおよびインタフェースの初期化」
「13.1 バイナリの形式」 - 導入されたバージョン:
- 1.2
- 関連項目:
-
forName
指定されたモジュール内の指定された「バイナリ名」を持つClass
を返します。このメソッドは、クラスまたはインタフェースを検索してロードしようとします。 クラスをリンクしません。また、クラスのイニシャライザを実行しません。 クラスが見つからない場合、このメソッドは
null
を返します。指定されたモジュールのクラス・ローダーが他のモジュールを定義し、指定された名前が別のモジュールで定義されたクラスである場合、このメソッドはクラスのロード後に
null
を返します。このメソッドは、リクエストされたクラスがコール元からアクセス可能かどうかをチェックしません。
- APIのノート:
- このメソッドは、
forName(String, boolean, ClassLoader)
とは異なり、配列型のロードをサポートしていません。 クラス名はバイナリ名である必要があります。 このメソッドは、forName(String, boolean, ClassLoader)
メソッドで行われるように、ClassNotFoundException
をスローするのではなく、失敗時にnull
を返します。 セキュリティ・チェックは、呼出し側が別のモジュールにクラスをロードするかどうかのスタック・ベースの権限チェックです。 - パラメータ:
module
- モジュールname
- クラスのバイナリ名- 戻り値:
- 指定されたモジュールに定義されている指定された名前の
Class
オブジェクト。見つからない場合はnull
。 - 例外:
NullPointerException
- 指定されたモジュールまたは名前がnull
LinkageError
- リンケージに失敗した場合SecurityException
-- 呼び出し元が指定されたモジュールではなく、
RuntimePermission("getClassLoader")
パーミッションが拒否された場合。または - モジュール・コンテンツへのアクセスが拒否されました。 たとえば、クラス・ローダーが
ModuleReader.open(String)
をコールしてモジュール内のクラス・ファイルのバイトを読み取る場合に、権限チェックが実行されます。
- 呼び出し元が指定されたモジュールではなく、
- Java言語仕様を参照してください:
-
12.2 クラスおよびインタフェースのロード
12.3 クラスおよびインタフェースのリンク - 導入されたバージョン:
- 9
-
forPrimitiveName
指定された名前の「プリミティブ型」に関連付けられているClass
オブジェクトを返します。 引数がプリミティブ型の名前でない場合、null
が返されます。- パラメータ:
primitiveName
- 検索するプリミティブ型の名前- 戻り値:
- 指定された名前の「プリミティブ型」に関連付けられている
Class
オブジェクト - 例外:
NullPointerException
- 引数がnull
の場合- Java言語仕様を参照してください:
-
「4.2 プリミティブ・タイプおよび値」
「15.8.2 クラス・リテラル」 - 導入されたバージョン:
- 22
-
newInstance
@Deprecated(since="9") public T newInstance() throws InstantiationException, IllegalAccessException非推奨。このメソッドは、チェック例外を含むnullaryコンストラクタによってスローされた例外をすべて伝播します。 このメソッドを使用することで、その他の場合にはコンパイラによって実行されるコンパイル時の例外確認を効果的にバイパスできます。Constructor.newInstance
メソッドはこの問題を回避するため、コンストラクタからスローされる任意の例外を、(チェックされる)InvocationTargetException
内にラップします。呼び出し
clazz.newInstance()
clazz.getDeclaredConstructor().newInstance()
InvocationTargetException
とNoSuchMethodException
をスローすることができると推測されます。 これらの例外型はどちらもReflectiveOperationException
のサブクラスです。このClass
オブジェクトが表すクラスの新しいインスタンスを作成します。new
式に空の引数リストを指定した場合と同じように、クラスのインスタンスが生成されます。 クラスは、初期化されていなければ初期化されます。- 戻り値:
- このオブジェクトが表す、クラスの新しく割り当てられたインスタンス
- 例外:
IllegalAccessException
- クラスまたはその引数なしのコンストラクタにアクセスできない場合。InstantiationException
- このClass
が抽象クラス、インタフェース、配列クラス、プリミティブ型、またはvoidを表す場合、クラスが引数なしのコンストラクタを保持しない場合、あるいはインスタンスの生成がほかの理由で失敗した場合。ExceptionInInitializerError
- このメソッドによる初期化に失敗した場合。SecurityException
- セキュリティ・マネージャsが存在し、呼出し側のクラス・ローダーが同じでないか、現在のクラスのクラス・ローダーの祖先とs.checkPackageAccess()
の呼出しがこのクラスのパッケージへのアクセスを許可しない場合
-
isInstance
public boolean isInstance(Object obj) 指定されたObject
が、このClass
が表すオブジェクトと代入互換の関係にあるかどうかを判定します。 このメソッドは、Java言語のinstanceof
演算子と動的に等価です。 このメソッドは、指定されたObject
引数がnull以外で、ClassCastException.
を発生させずにこのClass
オブジェクトによって表される参照タイプにキャストできる場合、true
を返します。 それ以外の場合はfalse
を戻します。特に、この
Class
オブジェクトが宣言クラスを表すときには、このメソッドは、指定されたObject
引数が表現クラス(またはそのサブクラス)のインスタンスの場合にtrue
を、そうでない場合にfalse
を返します。 このClass
オブジェクトが配列クラスを表すときには、恒等変換または拡張参照変換を用いて指定されたObject
引数を配列クラスのオブジェクトに変換できる場合にtrue
を、そうでない場合にfalse
を返します。 このClass
オブジェクトがインタフェースを表すときには、指定されたObject
引数のクラスまたはスーパー・クラスがこのインタフェースを実装する場合にtrue
を、そうでない場合にfalse
を返します。 このClass
オブジェクトがプリミティブ型を表す場合、このメソッドはfalse
を返します。- パラメータ:
obj
- チェック対象のオブジェクト- 戻り値:
obj
がこのクラスのインスタンスの場合はtrue- 導入されたバージョン:
- 1.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の場合。- 導入されたバージョン:
- 1.1
-
isInterface
public boolean isInterface()このClass
オブジェクトがインタフェース・タイプを表すかどうかを判定します。- 戻り値:
- この
Class
オブジェクトがインタフェースを表す場合はtrue
、それ以外の場合はfalse
。
-
isArray
public boolean isArray()このClass
オブジェクトが配列クラスを表すかどうかを判定します。- 定義:
- インタフェース
TypeDescriptor.OfField<T>
内のisArray
- 戻り値:
- この
Class
オブジェクトが配列クラスを表す場合はtrue
、そうでない場合はfalse
。 - 導入されたバージョン:
- 1.1
-
isPrimitive
public boolean isPrimitive()このClass
オブジェクトがプリミティブ型またはvoidのどちらを表すかを決定します。8つのプリミティブ型とvoidを表す、9つの定義済
Class
オブジェクトがあります。 これらは、Java Virtual Machineによって作成され、それらが表すプリミティブ型(boolean
,byte
,char
,short
,int
,long
,float
およびdouble
)と同じ「名前」を持ちます。その他のクラス・オブジェクトはプリミティブとはみなされません。
- 定義:
- インタフェース
TypeDescriptor.OfField<T>
内のisPrimitive
- APIのノート:
- プリミティブ型で表される
Class
オブジェクトには、Integer.TYPE
などのプリミティブ・ラッパー・クラスで定義されたTYPE
public static final変数を介してアクセスできます。 Javaプログラミング言語では、オブジェクトはint.class
などのクラス・リテラル式で参照できます。 voidのClass
オブジェクトは、void.class
またはVoid.TYPE
として表すことができます。 - 戻り値:
- このクラスがプリミティブ型を表す場合に限りtrue
- Java言語仕様を参照してください:
-
15.8.2 クラス・リテラル
- 導入されたバージョン:
- 1.1
- 関連項目:
-
isAnnotation
public boolean isAnnotation()このClass
オブジェクトが注釈インタフェースを表す場合はtrueを返します。 このメソッドがtrueを返す場合、すべての注釈インタフェースもインタフェースであるため、isInterface()
もtrueを返します。- 戻り値:
- この
Class
オブジェクトが注釈インタフェースを表す場合はtrue
、そうでない場合はfalse
- 導入されたバージョン:
- 1.5
-
isSynthetic
public boolean isSynthetic()このクラスに合成修飾子ビットが設定されている場合にのみ、true
を返します。- 戻り値:
- このクラスに合成修飾子ビットが設定されている場合にのみ
true
- Java言語仕様を参照してください:
-
13.1 バイナリの形式
- Java Virtual Machine仕様を参照してください:
-
4.1
ClassFile
構造 - 導入されたバージョン:
- 1.5
- 関連項目:
-
getName
public String getName()このClass
オブジェクトによって表されるエンティティ(クラス、インタフェース、配列クラス、プリミティブ型またはvoid)の名前を返します。この
Class
オブジェクトが配列クラスではなくクラスまたはインタフェースを表す場合:- クラスまたはインタフェースがhiddenでない場合は、クラスまたはインタフェースの「バイナリ名」が返されます。
- クラスまたはインタフェースが非表示の場合、結果は次の形式の文字列になります。 :
N + '/' + <suffix>
では、N
はLookup::defineHiddenClass
に渡されるclass
ファイルによって示されるバイナリ名で、<suffix>
は修飾されていない名前です。
この
Class
オブジェクトが配列クラスを表す場合、結果は、配列のネストの深さを表す1つ以上の'[
'文字と、次の表を使用してエンコードされた要素タイプで構成される文字列になります:要素タイプ Encoding boolean
Z
byte
B
char
C
「バイナリ名」 Nとのクラスまたはインタフェース L
N;
double
D
float
F
int
I
long
J
short
S
この
Class
オブジェクトがプリミティブ型またはvoid
を表す場合、結果は、プリミティブ型またはvoid
に対応するJava言語キーワードと同じスペルの文字列になります。例
String.class.getName() returns "java.lang.String" Character.UnicodeBlock.class.getName() returns "java.lang.Character$UnicodeBlock" 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"
- APIのノート:
- 個別のクラス・オブジェクトは、同じ名前を持つことができますが、クラス・ローダーは異なります。
- 戻り値:
- この
Class
オブジェクトによって表されるクラス、インタフェースまたはその他のエンティティの名前。 - Java言語仕様を参照してください:
-
13.1 バイナリの形式
-
getClassLoader
public ClassLoader getClassLoader()クラスのクラス・ローダーを返します。 実装によっては、nullを使ってブートストラップ・クラス・ローダーを表すこともできます。 このメソッドは、このクラスがブートストラップ・クラス・ローダーでロードされた場合に、そのような実装でnullを返します。この
Class
オブジェクトがプリミティブ型またはvoidを表す場合は、nullが返されます。- 戻り値:
- この
Class
オブジェクトによって表されるクラスまたはインタフェースをロードしたクラス・ローダー。 - 例外:
SecurityException
- セキュリティ・マネージャが存在し、呼出し元のクラス・ローダーがnull
ではなく、クラス・ローダーがリクエストされるクラスのクラス・ローダーと同じまたは祖先ではなく、呼出し元にRuntimePermission
("getClassLoader")
がない場合- 関連項目:
-
getModule
-
getTypeParameters
public TypeVariable<Class<T>>[] getTypeParameters()GenericDeclaration
オブジェクトによって表されるジェネリック宣言で宣言された型変数を表すTypeVariable
オブジェクトの配列を宣言順に返します。 基になるジェネリック宣言で型変数が宣言されていない場合は、長さ0の配列が返されます。- 定義:
getTypeParameters
、インタフェースGenericDeclaration
- 戻り値:
- このジェネリック宣言で宣言された型変数を表す
TypeVariable
オブジェクトの配列 - 例外:
GenericSignatureFormatError
- このジェネリック宣言のジェネリック・シグネチャが、「Java Virtual Machine仕様」の4.7.9セクションで指定された形式に準拠していない場合- 導入されたバージョン:
- 1.5
-
getSuperclass
-
getGenericSuperclass
public Type getGenericSuperclass()このClass
オブジェクトによって表されるエンティティ(クラス、インタフェース、プリミティブ型またはvoid)の直接スーパークラスを表すType
を返します。スーパークラスがパラメータ化された型である場合、返される
Type
オブジェクトは、ソース・コードで使用される実際の型引数を正確に反映する必要があります。 スーパー・クラスを表すパラメータ化された型は、以前作成されていなかった場合に作成されます。 パラメータ化された型の作成プロセスのセマンティックスについては、ParameterizedType
の宣言を参照してください。 このClass
オブジェクトがObject
クラス、インタフェース、プリミティブ型またはvoidのいずれかを表す場合は、nullが返されます。 このClass
オブジェクトが配列クラスを表す場合は、Object
クラスを表すClass
オブジェクトが返されます。- 戻り値:
- この
Class
オブジェクトによって表されるクラスの直接スーパー・クラス - 例外:
GenericSignatureFormatError
- ジェネリック・クラス・シグネチャが、「Java Virtual Machine仕様」の4.7.9セクションで指定された形式に準拠していない場合TypeNotPresentException
- ジェネリック・スーパークラスが、存在しない型宣言を参照する場合MalformedParameterizedTypeException
- ジェネリック・スーパークラスが、何らかの理由によりインスタンス化できないパラメータ化された型を参照する場合- 導入されたバージョン:
- 1.5
-
getPackage
public Package getPackage()このクラスのパッケージを取得します。このクラスが配列型、プリミティブ型またはvoidを表す場合、このメソッドは
null
を返します。- 戻り値:
- このクラスのパッケージ。
-
getPackageName
public String getPackageName()完全修飾パッケージ名を返します。このクラスが最上位クラスである場合、このメソッドは、クラスがメンバーであるパッケージの完全修飾名、またはクラスが名前のないパッケージ内にある場合は空の文字列を返します。
このクラスがメンバー・クラスである場合、このメソッドは「囲みクラス」上で
getPackageName()
を呼び出すことに相当します。このクラスが「ローカル・クラス」または「匿名クラス」である場合、このメソッドは「囲みメソッド」または「包含コンストラクタ」の「宣言クラス」で「宣言クラス」を呼び出すことと同等です。
このクラスが配列型を表す場合、このメソッドは要素型のパッケージ名を返します。 このクラスがプリミティブ型またはvoidを表す場合、パッケージ名"
java.lang
"が返されます。- 戻り値:
- 完全修飾パッケージ名
- Java言語仕様を参照してください:
-
6.7 完全修飾名
- 導入されたバージョン:
- 9
-
getInterfaces
public Class<?>[] getInterfaces()このClass
オブジェクトが表すクラスまたはインタフェースによって直接実装されたインタフェースを返します。この
Class
オブジェクトがクラスを表す場合、戻り値は、クラスによって直接実装されるすべてのインタフェースを表すオブジェクトを含む配列です。 配列内のインタフェース・オブジェクトの順序は、このClass
オブジェクトで表されるクラスの宣言のimplements
句内のインタフェース名の順序に対応します。 たとえば、class Shimmer implements FloorWax, DessertTopping { ... }
s
の値がShimmer
のインスタンスであるとします。s.getClass().getInterfaces()[0]
FloorWax
インタフェースを表すClass
オブジェクトであり、s.getClass().getInterfaces()[1]
DessertTopping
インタフェースを表すClass
オブジェクトです。この
Class
オブジェクトがインタフェースを表す場合、配列には、インタフェースによって直接拡張されたすべてのインタフェースを表すオブジェクトが含まれます。 配列内のインタフェース・オブジェクトの順序は、このClass
オブジェクトで表されるインタフェースの宣言のextends
句内のインタフェース名の順序に対応します。この
Class
オブジェクトがインタフェースを実装しないクラスまたはインタフェースを表す場合、このメソッドは長さ0の配列を返します。この
Class
オブジェクトがプリミティブ型またはvoidを表す場合、このメソッドは長さ0の配列を返します。この
Class
オブジェクトが配列型を表す場合、Cloneable
インタフェースとjava.io.Serializable
インタフェースはその順序で返されます。- 戻り値:
- このクラスによって直接実装されるインタフェースの配列
-
getGenericInterfaces
public Type[] getGenericInterfaces()このClass
オブジェクトによって表されるクラスまたはインタフェースによって直接実装されるインタフェースを表すType
を返します。スーパー・インタフェースがパラメータ化された型である場合、そのために返される
Type
オブジェクトは、ソース・コードで使用される実際の型引数を正確に反映する必要があります。 スーパー・インタフェースを表すパラメータ化された型は、以前作成されていなかった場合に作成されます。 パラメータ化された型の作成プロセスのセマンティックスについては、ParameterizedType
の宣言を参照してください。この
Class
オブジェクトがクラスを表す場合、戻り値は、クラスによって直接実装されるすべてのインタフェースを表すオブジェクトを含む配列です。 配列内のインタフェース・オブジェクトの順序は、このClass
オブジェクトで表されるクラスの宣言のimplements
句内のインタフェース名の順序に対応します。この
Class
オブジェクトがインタフェースを表す場合、配列には、インタフェースによって直接拡張されたすべてのインタフェースを表すオブジェクトが含まれます。 配列内のインタフェース・オブジェクトの順序は、このClass
オブジェクトで表されるインタフェースの宣言のextends
句内のインタフェース名の順序に対応します。この
Class
オブジェクトがインタフェースを実装しないクラスまたはインタフェースを表す場合、このメソッドは長さ0の配列を返します。この
Class
オブジェクトがプリミティブ型またはvoidを表す場合、このメソッドは長さ0の配列を返します。この
Class
オブジェクトが配列型を表す場合、Cloneable
インタフェースとjava.io.Serializable
インタフェースはその順序で返されます。- 戻り値:
- このクラスによって直接実装されるインタフェースの配列
- 例外:
GenericSignatureFormatError
- ジェネリック・クラス・シグネチャが、「Java Virtual Machine仕様」の4.7.9セクションで指定された形式に準拠していない場合TypeNotPresentException
- ジェネリック・スーパーインタフェースのどれかが、存在しない型宣言を参照する場合MalformedParameterizedTypeException
- ジェネリック・スーパーインタフェースのどれかが、何らかの理由によりインスタンス化できないパラメータ化された型を参照する場合- 導入されたバージョン:
- 1.5
-
getComponentType
public Class<?> getComponentType()配列のコンポーネント型を表すClass
を返します。 このクラスが配列クラスを表さない場合、このメソッドはnullを返します。- 戻り値:
- このクラスが配列の場合、このクラスのコンポーネント型を示す
Class
- 導入されたバージョン:
- 1.1
- 関連項目:
-
getModifiers
public int getModifiers()このクラスまたはインタフェースのJava言語修飾子を整数型に符号化して返します。 修飾子は、public
、protected
、private
、final
、static
、abstract
、およびinterface
用のJava仮想マシンの定数から構成されます。これらは、Modifier
クラスのメソッドを使ってデコードしなければいけません。基礎となるクラスが配列クラスである場合:
-
public
、private
およびprotected
修飾子は、そのコンポーネント・タイプの修飾子と同じです -
abstract
およびfinal
修飾子は常にtrue
です - コンポーネント・タイプがインタフェースの場合でも、インタフェース修飾子は常に
false
です
Class
オブジェクトがプリミティブ型またはvoidを表す場合、そのpublic
、abstract
およびfinal
修飾子は常にtrue
です。 void、プリミティブ型および配列を表すClass
オブジェクトの場合、他の修飾子の値は、前述のように指定されていないfalse
です。修飾子エンコーディングは、「Java Virtual Machine仕様」の4.1セクションで定義されています。
- 戻り値:
- このクラスの修飾子を表す
int
- Java言語仕様を参照してください:
-
「8.1.1 クラス修飾子」
「9.1.1.インタフェース修飾子」 - Java Virtual Machine仕様を参照してください:
-
4.1
ClassFile
構造 - 導入されたバージョン:
- 1.1
- 関連項目:
-
-
accessFlags
public Set<AccessFlag> accessFlags()このクラスの「アクセス・フラグ」の変更不可能なセットを返します(空の場合もあります)。基礎となるクラスが配列クラスである場合:
- その
PUBLIC
、PRIVATE
およびPROTECTED
アクセス・フラグは、そのコンポーネント・タイプのものと同じです -
ABSTRACT
およびFINAL
フラグが存在 - コンポーネント・タイプがインタフェースの場合でも、その
INTERFACE
フラグがありません
Class
オブジェクトがプリミティブ型またはvoidを表す場合、フラグはPUBLIC
、ABSTRACT
およびFINAL
です。 void、プリミティブ型および配列を表すClass
オブジェクトの場合、アクセス・フラグは前述のもの以外にありません。- 戻り値:
- このクラスの「アクセス・フラグ」の変更不可能なセット(空の場合あり)
- Java Virtual Machine仕様を参照してください:
-
「4.1 ClassFile構造」
「4.7.6 InnerClasses属性」 - 導入されたバージョン:
- 20
- 関連項目:
- その
-
getSigners
public Object[] getSigners()このクラスの署名者を取得します。- 戻り値:
- このクラスの署名者。署名者がない場合はnull。 特に、この
Class
オブジェクトがプリミティブ型またはvoidを表す場合、このメソッドはnullを返します。 - 導入されたバージョン:
- 1.1
-
getEnclosingMethod
public Method getEnclosingMethod() throws SecurityExceptionこのClass
オブジェクトが、メソッド内のローカル・クラスまたは匿名クラスを表す場合は、基本となるクラスを直接囲むメソッドを表すMethod
オブジェクトを返します。 それ以外の場合はnull
を返します。 特に、基礎となるクラスが、クラスまたはインタフェース宣言、インスタンス・イニシャライザまたはstaticイニシャライザで直接囲まれたローカル・クラスまたは匿名クラスである場合、このメソッドはnull
を返します。- 戻り値:
- クラスがローカル・クラスまたは匿名クラスの場合、基本となるクラスを直接囲むメソッド。そうでない場合は
null
。 - 例外:
SecurityException
- セキュリティ・マネージャsが存在し、次の条件のどれかが満たされる場合:- 呼出し側のクラス・ローダーが囲むクラスのクラス・ローダーと同じでなく、かつ
RuntimePermission("accessDeclaredMembers")
を持つs.checkPermission
メソッドの呼出しが囲むクラス内のメソッドへのアクセスを許可しない - 呼出し側のクラス・ローダーが同じでないか、囲むクラスのクラス・ローダーの祖先と
s.checkPackageAccess()
の呼出しが囲むクラスのパッケージへのアクセスを許可しない
- 呼出し側のクラス・ローダーが囲むクラスのクラス・ローダーと同じでなく、かつ
- 導入されたバージョン:
- 1.5
-
getEnclosingConstructor
public Constructor<?> getEnclosingConstructor() throws SecurityExceptionこのClass
オブジェクトが、コンストラクタ内のローカル・クラスまたは匿名クラスを表す場合は、基本となるクラスを直接囲むコンストラクタを表すConstructor
オブジェクトを返します。 それ以外の場合はnull
を返します。 特に、基礎となるクラスが、クラスまたはインタフェース宣言、インスタンス・イニシャライザまたはstaticイニシャライザで直接囲まれたローカル・クラスまたは匿名クラスである場合、このメソッドはnull
を返します。- 戻り値:
- クラスがローカル・クラスまたは匿名クラスの場合、基本となるクラスを直接囲むコンストラクタ。そうでない場合は
null
。 - 例外:
SecurityException
- セキュリティ・マネージャsが存在し、次の条件のどれかが満たされる場合:- 呼出し側のクラス・ローダーが囲むクラスのクラス・ローダーと同じでなく、かつ
RuntimePermission("accessDeclaredMembers")
を持つs.checkPermission
メソッドの呼出しが囲むクラス内のコンストラクタへのアクセスを許可しない - 呼出し側のクラス・ローダーが同じでないか、囲むクラスのクラス・ローダーの祖先と
s.checkPackageAccess()
の呼出しが囲むクラスのパッケージへのアクセスを許可しない
- 呼出し側のクラス・ローダーが囲むクラスのクラス・ローダーと同じでなく、かつ
- 導入されたバージョン:
- 1.5
-
getDeclaringClass
public Class<?> getDeclaringClass() throws SecurityExceptionこのClass
オブジェクトが表すクラスまたはインタフェースが別のクラスのメンバーの場合は、それが宣言されたクラスを表すClass
オブジェクトを返します。 このクラスまたはインタフェースがほかのクラスのメンバーでない場合は、nullを返します。 このClass
オブジェクトが配列クラス、プリミティブ型またはvoidを表す場合、このメソッドはnullを返します。- 戻り値:
- このクラスを宣言するクラス
- 例外:
SecurityException
- セキュリティ・マネージャsが存在し、呼出し側のクラス・ローダーが同じでないか、宣言しているクラスのクラス・ローダーの祖先とs.checkPackageAccess()
の呼出しが宣言しているクラスのパッケージへのアクセスを許可しない場合- 導入されたバージョン:
- 1.1
-
getEnclosingClass
public Class<?> getEnclosingClass() throws SecurityException基本となるクラスを直接囲むクラスを返します。 基本となるクラスがトップレベル・クラスである場合、null
を返します。- 戻り値:
- 基本となるクラスを直接囲むクラス
- 例外:
SecurityException
- セキュリティ・マネージャsが存在し、呼出し側のクラス・ローダーが同じでないか、囲むクラスのクラス・ローダーの祖先とs.checkPackageAccess()
の呼出しが囲むクラスのパッケージへのアクセスを許可しない場合- 導入されたバージョン:
- 1.5
-
getSimpleName
-
getTypeName
public String getTypeName()このクラスまたはインタフェースの名前の情報文字列を返します。- 定義:
getTypeName
、インタフェースType
- 戻り値:
- このクラスまたはインタフェースの名前を表す情報文字列
- 導入されたバージョン:
- 1.8
-
getCanonicalName
public String getCanonicalName()「Java言語仕様」で定義されている基礎となるクラスの正規名を返します。 基礎となるクラスに正規名がない場合、null
を返します。 正規名のないクラスは次のとおりです: プリミティブ・クラスの正規名は、対応するプリミティブ・タイプ(byte
,short
,char
,int
など)のキーワードです。配列型に正規名があるのは、その要素型に正規名がある場合のみです。 配列型に正規名がある場合、コンポーネント型の正規名に続けて"
[]
"と等しくなります。- 戻り値:
- 存在する場合は基本となるクラスの正規名。そうでない場合は
null
。 - Java言語仕様を参照してください:
-
6.7 完全修飾名および正規名
- 導入されたバージョン:
- 1.5
-
isAnonymousClass
public boolean isAnonymousClass()基本となるクラスが匿名クラスである場合だけtrue
を返します。- APIのノート:
- 匿名クラスは「非表示クラス」ではありません。
- 戻り値:
- このクラスが匿名クラスである場合だけ
true
。 - Java言語仕様を参照してください:
-
15.9.5 匿名クラス宣言
- 導入されたバージョン:
- 1.5
-
isLocalClass
public boolean isLocalClass()基本となるクラスがローカル・クラスである場合だけtrue
を返します。- 戻り値:
- このクラスがローカル・クラスである場合だけ
true
。 - Java言語仕様を参照してください:
-
14.3 ローカル・クラス宣言
- 導入されたバージョン:
- 1.5
-
isMemberClass
public boolean isMemberClass()基本となるクラスがメンバー・クラスである場合だけtrue
を返します。- 戻り値:
- このクラスがメンバー・クラスである場合だけ
true
。 - Java言語仕様を参照してください:
-
8.5 メンバー・タイプ宣言
- 導入されたバージョン:
- 1.5
-
getClasses
public Class<?>[] getClasses()このClass
オブジェクトが表すクラスのメンバーである、すべてのpublicクラスおよびインタフェースを表すClass
オブジェクトを格納している配列を返します。 スーパー・クラスから継承したpublicクラスおよびインタフェースのメンバー、ならびにクラスが宣言したpublicクラスとインタフェースのメンバーも含まれます。 このClass
オブジェクトがpublicメンバー・クラスやインタフェースを持たない場合、このメソッドは長さが0の配列を返します。 また、このClass
オブジェクトがプリミティブ型、配列クラス、またはvoidを表す場合も、このメソッドは長さが0の配列を返します。- 戻り値:
- このクラスのpublicメンバーを表す
Class
オブジェクトの配列 - 例外:
SecurityException
- セキュリティ・マネージャsが存在し、呼出し側のクラス・ローダーが同じでないか、現在のクラスのクラス・ローダーの祖先とs.checkPackageAccess()
の呼出しがこのクラスのパッケージへのアクセスを許可しない場合- 導入されたバージョン:
- 1.1
-
getFields
public Field[] getFields() throws SecurityExceptionこのClass
オブジェクトが表すクラスまたはインタフェースのすべてのアクセス可能なpublicフィールドをリフレクトする、Field
オブジェクトを保持している配列を返します。この
Class
オブジェクトがアクセス可能なパブリック・フィールドのないクラスまたはインタフェースを表す場合、このメソッドは長さ0の配列を返します。この
Class
オブジェクトがクラスを表す場合、このメソッドはクラスのパブリック・フィールドと、そのすべてのスーパークラスおよびスーパー・インタフェースを返します。この
Class
オブジェクトがインタフェースを表す場合、このメソッドはこのインタフェースとそのすべてのスーパー・インタフェースのフィールドを返します。この
Class
オブジェクトが配列型、プリミティブ型、またはvoidを表す場合、このメソッドは長さが0の配列を返します。返された配列内の要素は、ソートされていたり、特定の順序になっていたりすることはありません。
- 戻り値:
- publicフィールドを表す
Field
オブジェクトの配列 - 例外:
SecurityException
- セキュリティ・マネージャsが存在し、呼出し側のクラス・ローダーが同じでないか、現在のクラスのクラス・ローダーの祖先とs.checkPackageAccess()
の呼出しがこのクラスのパッケージへのアクセスを許可しない場合- Java言語仕様を参照してください:
-
8.2 クラス・メンバー
8.3フィールド宣言 - 導入されたバージョン:
- 1.1
-
getMethods
public Method[] getMethods() throws SecurityExceptionこのClass
オブジェクトによって表されるクラスまたはインタフェースのすべてのpublicメソッドをリフレクトするMethod
オブジェクトを格納している配列を返します。これには、クラスまたはインタフェースで宣言されたもの、およびスーパー・クラスやスーパー・インタフェースから継承されたものも含まれます。この
Class
オブジェクトが配列型を表す場合、返される配列にはObject
からの配列型によって継承された各publicメソッドのMethod
オブジェクトが含まれます。 それには、clone()
のMethod
オブジェクトは含まれません。この
Class
オブジェクトがインタフェースを表す場合、返される配列にはObject
からの暗黙的に宣言されたどのメソッドも含まれません。 そのため、このインタフェースやそのいずれかのスーパー・インタフェースで明示的に宣言されたメソッドが1つもない場合、返される配列の長さは0になります。 (クラスを表すClass
オブジェクトが常にObject
から継承されたpublicメソッドを持っていることに注意してください。)返される配列には、"<init>"または"<clinit>"という名前のメソッドは含まれません。
返された配列内の要素は、ソートされていたり、特定の順序になっていたりすることはありません。
一般に、結果は以下の4ステップ・アルゴリズムのように計算されます。 Cをこの
Class
オブジェクトによって表されるクラスまたはインタフェースとします:- メソッドの組合は以下のもので構成される:
-
getDeclaredMethods()
によって返されるCの宣言済パブリック・インスタンスおよび静的メソッドで、パブリック・メソッドのみを含めるようにフィルタ処理されています。 - Cが
Object
以外のクラスである場合、このアルゴリズムをCのスーパークラスで再帰的に起動した結果を含めます。 - このアルゴリズムをCのすべての直接スーパー・インタフェースで再帰的に起動した結果を含めますが、インスタンス・メソッドのみを含めます。
-
- ステップ1の結合は、同じシグネチャ(名前、パラメータ・タイプ)および戻り型を持つメソッドのサブセットにパーティション化されます。
- このような各サブセット内では、最も具体的なメソッドのみが選択されます。 メソッドMを、同じシグネチャと戻り型を持つ一連のメソッドのメソッドにします。 Mは、同じセットからそのようなメソッドN != Mがない場合に最も具体的であり、NはMよりも固有です。 NはMよりも具体的です:
- Nはクラスによって宣言され、Mはインタフェースによって宣言されます。または
- NとMはどちらもクラスによって宣言されるか、またはインタフェースによって宣言され、Nの宣言型はMの宣言型(明らかに、MとNの宣言型が同じ型である場合、MとNは同じメソッドです)と同じか、またはサブタイプです。
- このアルゴリズムの結果は、ステップ3のすべての選択されたメソッドの和集合です。
- APIのノート:
- クラスには、特定の名前型とパラメータ型を持つ複数のメソッドがある場合があります。Java言語では、同じシグネチャを持つが戻り型が異なる複数のメソッドをクラスで宣言することは禁止されていますが、Java仮想マシンでは宣言されないためです。 仮想マシンのこのような柔軟性を使用して、さまざまな言語機能を実装することができます。 たとえば、共変数の戻り値は「ブリッジ・メソッド」を使用して実装できます。ブリッジ・メソッドとオーバーライド・メソッドのシグネチャは同じですが、戻り型は異なります。
- 戻り値:
- このクラスのpublicメソッドを表す
Method
オブジェクトの配列 - 例外:
SecurityException
- セキュリティ・マネージャsが存在し、呼出し側のクラス・ローダーが同じでないか、現在のクラスのクラス・ローダーの祖先とs.checkPackageAccess()
の呼出しがこのクラスのパッケージへのアクセスを許可しない場合- Java言語仕様を参照してください:
-
8.2 クラス・メンバー
8.4メソッド宣言 - 導入されたバージョン:
- 1.1
- メソッドの組合は以下のもので構成される:
-
getConstructors
public Constructor<?>[] getConstructors() throws SecurityExceptionこのClass
オブジェクトが表すクラスのすべてのpublicコンストラクタをリフレクトするConstructor
オブジェクトを格納している配列を返します。 クラスにpublicコンストラクタがない場合、クラスが配列クラスの場合、またはクラスがプリミティブ型またはvoidをリフレクトする場合には、長さが0の配列を返します。- APIのノート:
- このメソッドは
Constructor<T>
オブジェクト(このクラスのコンストラクタの配列)の配列を返しますが、このメソッドの戻り値の型はConstructor<?>[]
であり、Constructor<T>[]
ではありません。 この情報の少ない戻り値の型は、このメソッドから返されたあとで必要になり、この配列はさまざまなクラスのConstructor
オブジェクトを保持するよう変更されることがあります。これは、Constructor<T>[]
の型保証に違反します。 - 戻り値:
- このクラスのpublicコンストラクタを表す
Constructor
オブジェクトの配列 - 例外:
SecurityException
- セキュリティ・マネージャsが存在し、呼出し側のクラス・ローダーが同じでないか、現在のクラスのクラス・ローダーの祖先とs.checkPackageAccess()
の呼出しがこのクラスのパッケージへのアクセスを許可しない場合- 導入されたバージョン:
- 1.1
- 関連項目:
-
getField
public Field getField(String name) throws NoSuchFieldException, SecurityException このClass
オブジェクトが表すクラスまたはインタフェースの、指定されたpublicメンバー・フィールドをリフレクトするField
オブジェクトを返します。name
パラメータは、要求されるフィールドに単純名を指定するString
です。リフレクトされるフィールドは、次のアルゴリズムで決定されます。 Cをこの
Class
オブジェクトによって表されるクラスまたはインタフェースとします:- Cが指定された名前を持つpublicフィールドを宣言すると、それがリフレクトされるフィールドになります。
- 上記のステップ1でフィールドが見つからなかった場合は、このアルゴリズムをCのそれぞれの直接スーパー・インタフェースに再帰的に適用します。 直接スーパー・インタフェースは宣言された順序で検索されます。
- 上記のステップ1と2でフィールドが見つからない場合、およびCがスーパー・クラスSを持つ場合は、このアルゴリズムはSで再帰的に呼び出されます。 Cがスーパー・クラスを持たない場合は、
NoSuchFieldException
がスローされます。
この
Class
オブジェクトが配列型を表す場合、このメソッドはその配列型のlength
フィールドを見つけられません。- パラメータ:
name
- フィールド名- 戻り値:
name
で指定されたこのクラスのField
オブジェクト- 例外:
NoSuchFieldException
- 指定された名前のフィールドが見つからない場合。NullPointerException
-name
がnull
である場合SecurityException
- セキュリティ・マネージャsが存在し、呼出し側のクラス・ローダーが同じでないか、現在のクラスのクラス・ローダーの祖先とs.checkPackageAccess()
の呼出しがこのクラスのパッケージへのアクセスを許可しない場合- Java言語仕様を参照してください:
-
8.2 クラス・メンバー
8.3フィールド宣言 - 導入されたバージョン:
- 1.1
-
getMethod
public Method getMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException このClass
オブジェクトが表すクラスまたはインタフェースの、指定されたpublicメンバー・メソッドをリフレクトするMethod
オブジェクトを返します。name
パラメータは、要求されるメソッドに単純名を指定するString
です。parameterTypes
パラメータは、メソッドの仮パラメータ型を宣言された順序で識別するClass
オブジェクトの配列です。parameterTypes
がnull
の場合は、空の配列のように扱われます。この
Class
オブジェクトが配列型を表す場合、このメソッドは、メソッドclone()
を除き、Object
から配列型によって継承されるパブリック・メソッドを検索します。この
Class
オブジェクトがインタフェースを表す場合、このメソッドはObject
から暗黙的に宣言されたメソッドを検出しません。 したがって、このインタフェースまたはそのスーパー・インタフェースで明示的に宣言されているメソッドがない場合、このメソッドはメソッドを検出しません。このメソッドでは、"<init>"または"<clinit>"という名前のメソッドは見つかりません。
通常、反映されるメソッドは、次の4ステップ・アルゴリズムによって決定されます。 Cをこの
Class
オブジェクトによって表されるクラスまたはインタフェースとします:- メソッドの組合は以下のもので構成される:
-
getDeclaredMethods()
によって戻され、指定されたname
およびparameterTypes
に一致するパブリック・メソッドのみを含めるようにフィルタされた、Cの宣言済パブリック・インスタンスおよび静的メソッド - Cが
Object
以外のクラスである場合、このアルゴリズムをCのスーパークラスで再帰的に起動した結果を含めます。 - このアルゴリズムをCのすべての直接スーパー・インタフェースで再帰的に起動した結果を含めますが、インスタンス・メソッドのみを含めます。
-
- この共用体は、同じ戻り型(ステップ1からのメソッドの選択でも、メソッド名とパラメータ型が同じであることが保証されます)を持つメソッドのサブセットに分割されます。
- このような各サブセット内では、最も具体的なメソッドのみが選択されます。 メソッドMを、同じVMシグネチャ(戻り型、名前、パラメータ型)を持つ一連のメソッドのメソッドとします。 Mは、同じセットからそのようなメソッドN != Mがない場合に最も具体的であり、NはMよりも固有です。 NはMよりも具体的です:
- Nはクラスによって宣言され、Mはインタフェースによって宣言されます。または
- NとMはどちらもクラスによって宣言されるか、またはインタフェースによって宣言され、Nの宣言型はMの宣言型(明らかに、MとNの宣言型が同じ型である場合、MとNは同じメソッドです)と同じか、またはサブタイプです。
- このアルゴリズムの結果は、ステップ3のすべての選択されたメソッドの中で最も特定の戻り値の型を持つメソッドから任意に選択されます。 ステップ3のすべての選択されたメソッドのセットから、メソッドMの戻り型をRとします。 Mは、SがR.class.
isAssignableFrom(java.lang.Class<?>)
(S.class)によって決定されるRのサブタイプとなるように、同じセットからN != Mメソッドが存在せず、戻り型S != Rを持つ場合に、最も具体的な戻り型を持つメソッドです。
- APIのノート:
- クラスには名前とパラメータ型が一致するメソッドが複数ある場合があります。Java言語では、同じシグネチャを持つが戻り型が異なる複数のメソッドをクラスで宣言することを禁止しますが、Java仮想マシンでは宣言しないためです。 仮想マシンのこのような柔軟性を使用して、さまざまな言語機能を実装することができます。 たとえば、共変数の戻り値は「ブリッジ・メソッド」を使用して実装できます。ブリッジ・メソッドとオーバーライド・メソッドのシグネチャは同じですが、戻り型は異なります。 このメソッドは、より具体的な戻り型を持つため、オーバーライドするメソッドを返します。
- パラメータ:
name
- メソッドの名前parameterTypes
- パラメータのリスト- 戻り値:
- 指定された
name
とparameterTypes
に一致するMethod
オブジェクト - 例外:
NoSuchMethodException
- 一致するメソッドが見つからない場合、または名前が"<init>"または"<clinit>"の場合。NullPointerException
-name
がnull
である場合SecurityException
- セキュリティ・マネージャsが存在し、呼出し側のクラス・ローダーが同じでないか、現在のクラスのクラス・ローダーの祖先とs.checkPackageAccess()
の呼出しがこのクラスのパッケージへのアクセスを許可しない場合- Java言語仕様を参照してください:
-
8.2 クラス・メンバー
8.4メソッド宣言 - 導入されたバージョン:
- 1.1
- メソッドの組合は以下のもので構成される:
-
getConstructor
public Constructor<T> getConstructor(Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException このClass
オブジェクトが表すクラスの指定されたpublicコンストラクタをリフレクトするConstructor
オブジェクトを返します。parameterTypes
パラメータは、コンストラクタの仮パラメータ型を宣言された順序で識別するClass
オブジェクトの配列です。 このClass
オブジェクトが非staticコンテキストに宣言された内部クラスを表す場合、仮パラメータ型には最初のパラメータとして明示的な囲むインスタンスが含まれます。リフレクトするコンストラクタは、
parameterTypes
に指定された型と一致する仮パラメータ型を持つこのClass
オブジェクトが表すクラスのpublicコンストラクタです。- パラメータ:
parameterTypes
- パラメータ配列- 戻り値:
- 指定された
parameterTypes
と一致するpublicコンストラクタのConstructor
オブジェクト - 例外:
NoSuchMethodException
- このClass
オブジェクトがインタフェース、プリミティブ型、配列クラスまたはvoidを表す場合など、一致するコンストラクタが見つからない場合。SecurityException
- セキュリティ・マネージャsが存在し、呼出し側のクラス・ローダーが同じでないか、現在のクラスのクラス・ローダーの祖先とs.checkPackageAccess()
の呼出しがこのクラスのパッケージへのアクセスを許可しない場合- 導入されたバージョン:
- 1.1
- 関連項目:
-
getDeclaredClasses
public Class<?>[] getDeclaredClasses() throws SecurityExceptionこのClass
オブジェクトが表すクラスのメンバーとして宣言されたすべてのクラスおよびインタフェースをリフレクトするClass
オブジェクトの配列を返します。 これには、クラスが宣言したpublic、protected、デフォルト(package)アクセス、およびprivateクラスとインタフェースは含まれますが、継承クラスとインタフェースは含まれません。 このメソッドは、クラスがメンバーとしてクラスまたはインタフェースを宣言していない場合や、このClass
オブジェクトがプリミティブ型、配列クラス、またはvoidを表す場合には、長さが0の配列を返します。- 戻り値:
- このクラスの宣言されたすべてのメンバーを表す
Class
オブジェクトの配列 - 例外:
SecurityException
- セキュリティ・マネージャsが存在し、次の条件のどれかが満たされる場合:- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
RuntimePermission("accessDeclaredMembers")
を持つs.checkPermission
メソッドの呼出しがこのクラス内の宣言されたクラスへのアクセスを許可しない - 呼出し側のクラス・ローダーが同じでないか、現在のクラス・ローダーの祖先と
s.checkPackageAccess()
の呼出しがこのクラスのパッケージへのアクセスを許可しない
- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
- Java言語仕様を参照してください:
-
8.5 メンバー・タイプ宣言
- 導入されたバージョン:
- 1.1
-
getDeclaredFields
public Field[] getDeclaredFields() throws SecurityExceptionこのClass
オブジェクトが表すクラスまたはインタフェースによって宣言されたすべてのフィールドをリフレクトするField
オブジェクトの配列を返します。 これには、public、protected、デフォルト(package)アクセス、およびprivateフィールドは含まれますが、継承フィールドは含まれません。この
Class
オブジェクトが宣言されたフィールドを持たないクラスまたはインタフェースを表す場合、このメソッドは長さが0の配列を返します。この
Class
オブジェクトが配列型、プリミティブ型、またはvoidを表す場合、このメソッドは長さが0の配列を返します。返された配列内の要素は、ソートされていたり、特定の順序になっていたりすることはありません。
- 戻り値:
- このクラスの宣言されたすべてのフィールドを表す
Field
オブジェクトの配列 - 例外:
SecurityException
- セキュリティ・マネージャsが存在し、次の条件のどれかが満たされる場合:- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
RuntimePermission("accessDeclaredMembers")
を持つs.checkPermission
メソッドの呼出しがこのクラス内の宣言されたフィールドへのアクセスを許可しない - 呼出し側のクラス・ローダーが同じでないか、現在のクラス・ローダーの祖先と
s.checkPackageAccess()
の呼出しがこのクラスのパッケージへのアクセスを許可しない
- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
- Java言語仕様を参照してください:
-
8.2 クラス・メンバー
8.3フィールド宣言 - 導入されたバージョン:
- 1.1
-
getRecordComponents
public RecordComponent[] getRecordComponents()このレコード・クラスのすべてのレコード・コンポーネントを表すRecordComponent
オブジェクトの配列を返します。このクラスがレコード・クラスでない場合はnull
を返します。コンポーネントは、レコード・ヘッダーで宣言されたのと同じ順序で返されます。 このレコード・クラスにコンポーネントがない場合、配列は空です。 クラスがレコード・クラスではない、つまり
isRecord()
がfalse
を返す場合、このメソッドはnull
を返します。 逆に、isRecord()
からtrue
が返された場合、このメソッドはnull以外の値を返します。- APIのノート:
次のメソッドを使用して、レコードの標準コンストラクタを検索できます:
static <T extends Record> Constructor<T> getCanonicalConstructor(Class<T> cls) throws NoSuchMethodException { Class<?>[] paramTypes = Arrays.stream(cls.getRecordComponents()) .map(RecordComponent::getType) .toArray(Class<?>[]::new); return cls.getDeclaredConstructor(paramTypes); }
- 戻り値:
- このレコード・クラスのすべてのレコード・コンポーネントを表す
RecordComponent
オブジェクトの配列。このクラスがレコード・クラスでない場合はnull
。 - 例外:
SecurityException
- セキュリティ・マネージャsが存在し、次の条件のどれかが満たされる場合:- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
RuntimePermission("accessDeclaredMembers")
を持つs.checkPermission
メソッドの呼出しがこのクラス内の宣言されたメソッドへのアクセスを許可しない - 呼出し側のクラス・ローダーが同じでないか、現在のクラス・ローダーの祖先と
s.checkPackageAccess()
の呼出しがこのクラスのパッケージへのアクセスを許可しない
- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
- Java言語仕様を参照してください:
-
8.10 レコード・クラス
- 導入されたバージョン:
- 16
-
getDeclaredMethods
public Method[] getDeclaredMethods() throws SecurityExceptionこのClass
オブジェクトによって表されるクラスまたはインタフェースのすべての宣言されたメソッドをリフレクトするMethod
オブジェクトが格納された配列を返します。これには、public、protected、デフォルト(package)アクセスおよびprivateメソッドが含まれますが、継承されたメソッドは除外されます。 宣言されたメソッドには、クラスまたはインタフェースのソースに含まれないメソッド(コンパイラによって追加された「ブリッジ・メソッド」およびその他のsyntheticメソッドを含む)が含まれる場合があります。この
Class
オブジェクトが、名前とパラメータの型は同じだが戻り値の型が異なる複数の宣言済メソッドを持つクラスまたはインタフェースを表す場合、返される配列にはそのようなメソッドごとにMethod
オブジェクトがあります。この
Class
オブジェクトがクラス初期化メソッド"<clinit>"を持つクラスまたはインタフェースを表す場合、返された配列には対応するMethod
オブジェクトがありません。この
Class
オブジェクトが宣言されたメソッドを持たないクラスまたはインタフェースを表す場合、返される配列の長さは0になります。この
Class
オブジェクトが配列型、プリミティブ型、またはvoidを表す場合、返される配列の長さは0になります。返された配列内の要素は、ソートされていたり、特定の順序になっていたりすることはありません。
- 戻り値:
- このクラスの宣言されたすべてのメソッドを表す
Method
オブジェクトの配列 - 例外:
SecurityException
- セキュリティ・マネージャsが存在し、次の条件のどれかが満たされる場合:- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
RuntimePermission("accessDeclaredMembers")
を持つs.checkPermission
メソッドの呼出しがこのクラス内の宣言されたメソッドへのアクセスを許可しない - 呼出し側のクラス・ローダーが同じでないか、現在のクラス・ローダーの祖先と
s.checkPackageAccess()
の呼出しがこのクラスのパッケージへのアクセスを許可しない
- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
- Java言語仕様を参照してください:
-
8.2 クラス・メンバー
8.4メソッド宣言 - 導入されたバージョン:
- 1.1
- 関連項目:
-
getDeclaredConstructors
public Constructor<?>[] getDeclaredConstructors() throws SecurityExceptionこのClass
オブジェクトで表されるクラスによって暗黙的または明示的に宣言されたすべてのコンストラクタを反映するConstructor
オブジェクトの配列を返します。 これらは、public、protected、デフォルト(package)アクセス、およびprivateコンストラクタです。 返された配列内の要素は、ソートされていたり、特定の順序になっていたりすることはありません。 クラスにデフォルトのコンストラクタ(JLS 8.8.9)がある場合、返される配列に含まれます。 レコード・クラスに正規コンストラクタ(JLS 8.10.4.1、8.10.4.2)がある場合、返される配列に含まれます。 このメソッドは、このClass
オブジェクトがインタフェース、プリミティブ型、配列クラス、またはvoidを表す場合には長さが0の配列を返します。- 戻り値:
- このクラスの宣言されたすべてのコンストラクタを表す
Constructor
オブジェクトの配列 - 例外:
SecurityException
- セキュリティ・マネージャsが存在し、次の条件のどれかが満たされる場合:- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
RuntimePermission("accessDeclaredMembers")
を持つs.checkPermission
メソッドの呼出しがこのクラス内の宣言されたコンストラクタへのアクセスを許可しない - 呼出し側のクラス・ローダーが同じでないか、現在のクラス・ローダーの祖先と
s.checkPackageAccess()
の呼出しがこのクラスのパッケージへのアクセスを許可しない
- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
- Java言語仕様を参照してください:
-
8.8 コンストラクタ宣言
- 導入されたバージョン:
- 1.1
- 関連項目:
-
getDeclaredField
public Field getDeclaredField(String name) throws NoSuchFieldException, SecurityException このClass
オブジェクトが表すクラスまたはインタフェースの、指定された宣言されたフィールドをリフレクトするField
オブジェクトを返します。name
パラメータは、要求されるフィールドに単純名を指定するString
です。この
Class
オブジェクトが配列型を表す場合、このメソッドはその配列型のlength
フィールドを見つけられません。- パラメータ:
name
- フィールドの名前- 戻り値:
- このクラスに指定されたフィールドの
Field
オブジェクト - 例外:
NoSuchFieldException
- 指定された名前のフィールドが見つからない場合。NullPointerException
-name
がnull
である場合SecurityException
- セキュリティ・マネージャsが存在し、次の条件のどれかが満たされる場合:- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
RuntimePermission("accessDeclaredMembers")
を持つs.checkPermission
メソッドの呼出しが宣言されたフィールドへのアクセスを許可しない - 呼出し側のクラス・ローダーが同じでないか、現在のクラス・ローダーの祖先と
s.checkPackageAccess()
の呼出しがこのクラスのパッケージへのアクセスを許可しない
- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
- Java言語仕様を参照してください:
-
8.2 クラス・メンバー
8.3フィールド宣言 - 導入されたバージョン:
- 1.1
-
getDeclaredMethod
public Method getDeclaredMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException このClass
オブジェクトが表すクラスまたはインタフェースの、指定された宣言されたメソッドをリフレクトするMethod
オブジェクトを返します。name
パラメータは、要求されたメソッドの単純名を指定するString
です。parameterTypes
パラメータは、メソッドの仮パラメータ型を宣言順に識別するClass
オブジェクトの配列です。 同じパラメータ型を持つ複数のメソッドが1つのクラスで宣言され、そうしたメソッドの1つがそれ以外のどれよりも明確な戻り値の型を持つ場合には、そのメソッドが返されます。そうでない場合は、メソッドの1つが任意に選択されます。 名前が"<init>"または"<clinit>"の場合は、NoSuchMethodException
が呼び出されます。この
Class
オブジェクトが配列型を表す場合、このメソッドはclone()
メソッドを見つけられません。- パラメータ:
name
- メソッドの名前parameterTypes
- パラメータ配列- 戻り値:
- このクラスの指定された名前とパラメータと一致するメソッドの
Method
オブジェクト - 例外:
NoSuchMethodException
- 一致するメソッドが見つからない場合。NullPointerException
-name
がnull
である場合SecurityException
- セキュリティ・マネージャsが存在し、次の条件のどれかが満たされる場合:- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
RuntimePermission("accessDeclaredMembers")
を持つs.checkPermission
メソッドの呼出しが宣言されたメソッドへのアクセスを許可しない - 呼出し側のクラス・ローダーが同じでないか、現在のクラス・ローダーの祖先と
s.checkPackageAccess()
の呼出しがこのクラスのパッケージへのアクセスを許可しない
- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
- Java言語仕様を参照してください:
-
8.2 クラス・メンバー
8.4メソッド宣言 - 導入されたバージョン:
- 1.1
-
getDeclaredConstructor
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException このClass
オブジェクトで表されるクラスの指定されたコンストラクタを反映するConstructor
オブジェクトを返します。parameterTypes
パラメータは、コンストラクタの仮パラメータ型を宣言された順序で識別するClass
オブジェクトの配列です。 このClass
オブジェクトが非staticコンテキストに宣言された内部クラスを表す場合、仮パラメータ型には最初のパラメータとして明示的な囲むインスタンスが含まれます。- パラメータ:
parameterTypes
- パラメータ配列- 戻り値:
- 指定されたパラメータ・リストを持つコンストラクタの
Constructor
オブジェクト - 例外:
NoSuchMethodException
- このClass
オブジェクトがインタフェース、プリミティブ型、配列クラスまたはvoidを表す場合など、一致するコンストラクタが見つからない場合。SecurityException
- セキュリティ・マネージャsが存在し、次の条件のどれかが満たされる場合:- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
RuntimePermission("accessDeclaredMembers")
を持つs.checkPermission
メソッドの呼出しが宣言されたコンストラクタへのアクセスを許可しない - 呼出し側のクラス・ローダーが同じでないか、現在のクラス・ローダーの祖先と
s.checkPackageAccess()
の呼出しがこのクラスのパッケージへのアクセスを許可しない
- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
- 導入されたバージョン:
- 1.1
- 関連項目:
-
getResourceAsStream
public InputStream getResourceAsStream(String name) 指定された名前のリソースを探します。このクラスが名前付き
Module
にある場合、このメソッドはモジュール内のリソースの検索を試みます。 これは、モジュールのクラス・ローダーfindResource(String,String)
メソッドに委任して、モジュール名とリソースの絶対名で呼び出します。 名前付きモジュールのリソースは、Module
getResourceAsStream
メソッドで指定されたカプセル化のルールに従うため、このメソッドは、リソースがコール元のモジュールに対して開かれていないパッケージ内の".class
"以外のリソースである場合、null
を返します。それ以外の場合、このクラスが名前付きモジュールにない場合、特定のクラスに関連付けられているリソースを検索するためのルールは、クラスの定義「クラス・ローダー」によって実装されます。 このメソッドは、この
Class
オブジェクト・クラス・ローダーに委任します。 このClass
オブジェクトがブートストラップ・クラス・ローダーによってロードされた場合、メソッドはClassLoader.getSystemResourceAsStream(java.lang.String)
に委譲します。委譲の前に、このアルゴリズムを使って指定されたリソース名から絶対リソース名が構築されます。
-
name
が'/'
('\u002f'
)で始まる場合、リソースの絶対名は、'/'
に続くname
の部分です。 - そうでない場合、絶対名は次の形式になる
modified_package_name/name
ここで、
modified_package_name
は、'.'
('\u002e'
)に'/'
を置換した、このオブジェクトのパッケージ名です。
- パラメータ:
name
- 要求されるリソースの名前- 戻り値:
InputStream
オブジェクト、この名前のリソースが見つからない場合はnull
、リソースが少なくともコール元モジュールに対してopenではないパッケージ内にある、またはリソースへのアクセスがセキュリティ・マネージャによって拒否されます。- 例外:
NullPointerException
-name
がnull
である場合- 導入されたバージョン:
- 1.1
- 関連項目:
-
-
getResource
指定された名前のリソースを探します。このクラスが名前付き
Module
にある場合、このメソッドはモジュール内のリソースの検索を試みます。 これは、モジュールのクラス・ローダーfindResource(String,String)
メソッドに委任して、モジュール名とリソースの絶対名で呼び出します。 名前付きモジュールのリソースは、Module
getResourceAsStream
メソッドで指定されたカプセル化のルールに従うため、このメソッドは、リソースがコール元のモジュールに対して開かれていないパッケージ内の".class
"以外のリソースである場合、null
を返します。それ以外の場合、このクラスが名前付きモジュールにない場合、特定のクラスに関連付けられているリソースを検索するためのルールは、クラスの定義「クラス・ローダー」によって実装されます。 このメソッドは、この
Class
オブジェクト・クラス・ローダーに委任します。 このClass
オブジェクトがブートストラップ・クラス・ローダーによってロードされた場合、メソッドはClassLoader.getSystemResource(java.lang.String)
に委譲します。委譲の前に、このアルゴリズムを使って指定されたリソース名から絶対リソース名が構築されます。
-
name
が'/'
('\u002f'
)で始まる場合、リソースの絶対名は、'/'
に続くname
の部分です。 - そうでない場合、絶対名は次の形式になる
modified_package_name/name
ここで、
modified_package_name
は、'.'
('\u002e'
)に'/'
を置換した、このオブジェクトのパッケージ名です。
- パラメータ:
name
- 要求されるリソースの名前- 戻り値:
URL
オブジェクト、null
がこの名前のリソースが見つからない場合、URLでリソースを見つけることができない、リソースが少なくとも呼出し元モジュールに対してopenではないパッケージにある、またはリソースへのアクセスがセキュリティ・マネージャによって拒否されます。- 例外:
NullPointerException
-name
がnull
である場合- 導入されたバージョン:
- 1.1
-
-
getProtectionDomain
public ProtectionDomain getProtectionDomain()このクラスのProtectionDomain
を返します。 セキュリティ・マネージャがインストールされていると、このメソッドはまずセキュリティ・マネージャのcheckPermission
メソッドをRuntimePermission("getProtectionDomain")
アクセス権を使って呼び出すことによってProtectionDomain
を問題なく取得できることを確認します。- 戻り値:
- このクラスのProtectionDomain
- 例外:
SecurityException
- セキュリティ・マネージャが存在し、そのcheckPermission
メソッドがProtectionDomainの取得を許可しない場合。- 導入されたバージョン:
- 1.2
- 関連項目:
-
desiredAssertionStatus
public boolean desiredAssertionStatus()このメソッドの呼出し時にこのクラスを初期化する場合、クラスに割り当てられるアサーション・ステータスを返します。 このクラスのアサーション・ステータスが設定されている場合は、最新設定が返されます。それ以外の場合で、このクラスに関連するパッケージのデフォルトのアサーション・ステータスが存在するときは、最適なパッケージのデフォルトのアサーション・ステータスの最新設定が返されます。それ以外の場合で、このクラスがシステム・クラスでない(つまりクラス・ローダーを保持する)ときは、クラス・ローダーのデフォルトのアサーション・ステータスが返されます。それ以外の場合、システム・クラスのデフォルトのアサーション・ステータスが返されます。- APIのノート:
- このメソッドを必要とするプログラマはほとんどいません。JDK自体の利点を得るために提供されています。 (このメソッドにより、初期化時にアサーションが有効にするかどうかをクラスが判別できる)。 指定されたクラスの初期化時に、このメソッドが、指定されたクラスに関連付けられた実際のアサーション・ステータスを返すとは限らないことに留意してください。
- 戻り値:
- 対象とする、指定されたクラスのアサーション・ステータス
- 導入されたバージョン:
- 1.4
- 関連項目:
-
isEnum
public boolean isEnum()このクラスがソース・コードでenumとして宣言された場合だけtrueを返します。Enum
自体は列挙型クラスではないことに注意してください。 また、enum定数がクラス本文で宣言されている場合、そのenum定数オブジェクトのクラスは匿名クラスであり、宣言するenumクラスのクラスではないことにも注意してください。 enum定数のEnum.getDeclaringClass()
メソッドを使用すると、定数を宣言するenumクラスのクラスを取得できます。- 戻り値:
- このクラスがソース・コードでenumとして宣言された場合だけtrue
- Java言語仕様を参照してください:
-
8.9.1 enum定数
- 導入されたバージョン:
- 1.5
-
isRecord
public boolean isRecord()このクラスがレコード・クラスである場合のみ、true
を返します。レコード・クラスの「直接スーパークラス」は、
java.lang.Record
です。 レコード・クラスはfinalです。 レコード・クラスには(0(ゼロ))レコード・コンポーネントがあります。getRecordComponents()
はレコードに対してnull以外の値を返しますが、空の場合もあります。クラス
Record
はレコード・クラスではないため、Record
クラスでこのメソッドを呼び出すと、false
が返されます。- 戻り値:
- このクラスがレコード・クラスである場合のみtrue。それ以外の場合はfalse
- Java言語仕様を参照してください:
-
8.10 レコード・クラス
- 導入されたバージョン:
- 16
-
getEnumConstants
public T[] getEnumConstants()このenumクラスの要素を返します。このClassオブジェクトがenumクラスを表さない場合はnullを返します。- 戻り値:
- 宣言された順序でこの
Class
オブジェクトによって表されるenumクラスを構成する値を含む配列。このClass
オブジェクトがenumクラスを表さない場合はnull - Java言語仕様を参照してください:
-
8.9.1 enum定数
- 導入されたバージョン:
- 1.5
-
cast
このClass
オブジェクトが表すクラスまたはインタフェースにオブジェクトをキャストします。- パラメータ:
obj
- キャストされるオブジェクト- 戻り値:
- キャスト後のオブジェクト。オブジェクトがnullの場合はnull
- 例外:
ClassCastException
- オブジェクトがnull以外であり、型Tに割り当てられない場合。- 導入されたバージョン:
- 1.5
-
asSubclass
指定されたクラス・オブジェクトによって表されるクラスのサブクラスを表すためにこのClass
オブジェクトをキャストします。 キャストが有効であることを確認し、有効でない場合はClassCastException
をスローします。 このメソッドが成功すると、常にこのClass
オブジェクトへの参照が返されます。このメソッドは、受け取る側の
Class
オブジェクトを制限するAPIに渡すために、クライアントがClass
オブジェクトの型をナロー変換する必要がある場合に役立ちます。 (ジェネリック型はイレイジャによって実装されるので)キャストの正確性を実行時に確認することはできないため、キャストによってコンパイル時の警告が生成されます。- 型パラメータ:
U
- このClass
オブジェクトのキャスト先の型- パラメータ:
clazz
- このClass
オブジェクトのキャスト先の型のクラス- 戻り値:
- 指定されたクラス・オブジェクトのサブクラスを表すためにキャストされた、この
Class
オブジェクト。 - 例外:
ClassCastException
- このClass
オブジェクトが指定されたクラスのサブクラスを表さない場合(「サブクラス」はクラス自体を含む)。- 導入されたバージョン:
- 1.5
-
getAnnotation
public <A extends Annotation> A getAnnotation(Class<A> annotationClass) 存在する場合は、この要素の指定された型の注釈を返し、そうでない場合はnullを返します。このメソッドによって返される注釈は宣言注釈であることに注意してください。
- 定義:
getAnnotation
、インタフェースAnnotatedElement
- 型パラメータ:
A
- 問合せの対象であり、存在する場合に返される注釈の型- パラメータ:
annotationClass
- 注釈型に対応するClassオブジェクト- 戻り値:
- 存在する場合は、この要素の指定された注釈型の注釈。そうでない場合はnull
- 例外:
NullPointerException
- 指定された注釈クラスがnullの場合- 導入されたバージョン:
- 1.5
-
isAnnotationPresent
public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) 指定された型の注釈がこの要素に存在する場合はtrueを返し、そうでない場合はfalseを返します。 このメソッドは、主にマーカー注釈への簡易アクセスを目的に設計されています。このメソッドによって返されるtrue値は、
getAnnotation(annotationClass) != null
と同等です。- 定義:
isAnnotationPresent
、インタフェースAnnotatedElement
- パラメータ:
annotationClass
- 注釈型に対応するClassオブジェクト- 戻り値:
- 指定された注釈型の注釈がこの要素に存在する場合はtrue、そうでない場合はfalse
- 例外:
NullPointerException
- 指定された注釈クラスがnullの場合- 導入されたバージョン:
- 1.5
-
getAnnotationsByType
public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationClass) この要素に関連付けられている注釈を返します。 この要素に関連付けられている注釈がない場合、戻り値は長さ0の配列です。 このメソッドとAnnotatedElement.getAnnotation(Class)
の違いは、引数が「繰返し可能な注釈タイプ」 (JLS 9.6)であるかどうかをこのメソッドが検出し、その場合、"検索"がコンテナ注釈を使用してそのタイプの注釈を検索しようとすることです。 このメソッドの呼出し元は、返された配列を自由に変更することができ、これはほかの呼出し元に返された配列に影響を及ぼしません。このメソッドによって返される注釈は宣言注釈であることに注意してください。
- 定義:
getAnnotationsByType
、インタフェースAnnotatedElement
- 型パラメータ:
A
- 問合せの対象であり、存在する場合に返される注釈の型- パラメータ:
annotationClass
- 注釈型に対応するClassオブジェクト- 戻り値:
- この要素に関連付けられている場合は、この要素の指定された注釈型のすべての注釈。そうでない場合は長さ0の配列
- 例外:
NullPointerException
- 指定された注釈クラスがnullの場合- 導入されたバージョン:
- 1.8
-
getAnnotations
public Annotation[] getAnnotations()この要素に存在する注釈を返します。 この要素に存在する注釈がない場合、戻り値は長さ0の配列です。 このメソッドの呼出し元は、返された配列を自由に変更することができ、これはほかの呼出し元に返された配列に影響を及ぼしません。このメソッドによって返される注釈は宣言注釈であることに注意してください。
- 定義:
getAnnotations
、インタフェースAnnotatedElement
- 戻り値:
- この要素に存在する注釈
- 導入されたバージョン:
- 1.5
-
getDeclaredAnnotation
public <A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass) 直接存在する場合は、この要素の指定された型の注釈を返し、そうでない場合はnullを返します。 このメソッドは継承された注釈を無視します。 (この要素に直接存在する注釈がない場合は、nullを返します。)このメソッドによって返される注釈は宣言注釈であることに注意してください。
- 定義:
getDeclaredAnnotation
、インタフェースAnnotatedElement
- 型パラメータ:
A
- 問合せの対象であり、直接存在する場合に返される注釈の型- パラメータ:
annotationClass
- 注釈型に対応するClassオブジェクト- 戻り値:
- 直接存在する場合は、この要素の指定された注釈型の注釈。そうでない場合はnull
- 例外:
NullPointerException
- 指定された注釈クラスがnullの場合- 導入されたバージョン:
- 1.8
-
getDeclaredAnnotationsByType
public <A extends Annotation> A[] getDeclaredAnnotationsByType(Class<A> annotationClass) 直接存在するか間接的に存在する場合は、この要素の指定された型の注釈を返します。 このメソッドは継承された注釈を無視します。 この要素に直接または間接的に存在する指定された注釈がない場合、戻り値は長さ0の配列です。 このメソッドとAnnotatedElement.getDeclaredAnnotation(Class)
の違いは、引数が「繰返し可能な注釈タイプ」 (JLS 9.6)であるかどうかをこのメソッドが検出し、ある場合は"検索"がコンテナ注釈(存在する場合)を検出しようとする点です。 このメソッドの呼出し元は、返された配列を自由に変更することができ、これはほかの呼出し元に返された配列に影響を及ぼしません。このメソッドによって返される注釈は宣言注釈であることに注意してください。
- 定義:
getDeclaredAnnotationsByType
、インタフェースAnnotatedElement
- 型パラメータ:
A
- 問合せの対象であり、直接または間接的に存在する場合に返される注釈の型- パラメータ:
annotationClass
- 注釈型に対応するClassオブジェクト- 戻り値:
- この要素に直接または間接的に存在する場合は、この要素の指定された注釈型のすべての注釈。そうでない場合は長さ0の配列
- 例外:
NullPointerException
- 指定された注釈クラスがnullの場合- 導入されたバージョン:
- 1.8
-
getDeclaredAnnotations
public Annotation[] getDeclaredAnnotations()この要素に直接存在する注釈を返します。 このメソッドは継承された注釈を無視します。 この要素に直接存在する注釈がない場合、戻り値は長さ0の配列です。 このメソッドの呼出し元は、返された配列を自由に変更することができ、これはほかの呼出し元に返された配列に影響を及ぼしません。このメソッドによって返される注釈は宣言注釈であることに注意してください。
- 定義:
getDeclaredAnnotations
、インタフェースAnnotatedElement
- 戻り値:
- この要素に直接存在する注釈
- 導入されたバージョン:
- 1.5
-
getAnnotatedSuperclass
public AnnotatedType getAnnotatedSuperclass()Class
オブジェクトによって表されるエンティティのスーパークラスを指定する型の使用を表すAnnotatedType
オブジェクトを返します。 ('... extends Foo'でスーパークラスを指定するFooタイプのuseは、Fooクラスの「宣言」とは異なります。)この
Class
オブジェクトが、宣言が明示的に注釈付きスーパークラスを示していないクラスを表す場合、戻り値は注釈のない要素を表すAnnotatedType
オブジェクトです。この
Class
がObject
クラス、インタフェース・タイプ、配列型、プリミティブ型、またはvoidを表す場合、戻り値はnull
になります。- 戻り値:
- スーパー・クラスを表すオブジェクト
- 導入されたバージョン:
- 1.8
-
getAnnotatedInterfaces
public AnnotatedType[] getAnnotatedInterfaces()Class
オブジェクトによって表されるエンティティのスーパーインタフェースを指定する型の使用を表すAnnotatedType
オブジェクトの配列を返します。 ('... implements Foo'でスーパー・インタフェースを指定するFooタイプのuseは、Fooインタフェースの「宣言」とは異なります。)この
Class
オブジェクトがクラスを表す場合、戻り値は、そのクラスによって実装されたインタフェースを指定するためのインタフェース・タイプの使用を表すオブジェクトを格納している配列です。 配列内のオブジェクトの順序は、このClass
オブジェクトの宣言の「implements」節で使用されるインタフェース・タイプの順序に一致します。この
Class
オブジェクトがインタフェースを表す場合、戻り値は、そのインタフェースによって直接拡張されたインタフェースを指定するためのインタフェース・タイプの使用を表すオブジェクトを格納している配列です。 配列内のオブジェクトの順序は、このClass
オブジェクトの宣言の「extends」節で使用されるインタフェース・タイプの順序に一致します。この
Class
オブジェクトが、宣言がいずれかの注釈付きスーパー・インタフェースを明示的に示さないクラスまたはインタフェースを表す場合、戻り値は長さが0の配列になります。この
Class
オブジェクトがObject
クラス、配列型、プリミティブ型、またはvoidを表す場合、戻り値は長さが0の配列になります。- 戻り値:
- スーパー・インタフェースを表す配列
- 導入されたバージョン:
- 1.8
-
getNestHost
public Class<?> getNestHost()このClass
オブジェクトが表すクラスまたはインタフェースが属する「ネスト」のネストされたホストを返します。 すべてのクラスとインタフェースは、1つのネストに属します。 このクラスまたはインタフェースのネストされたホストがすでに決定されている場合、このメソッドはネストされたホストを返します。 このクラスまたはインタフェースのネストされたホストがまだ決定されていない場合、このメソッドはJVMS 5.4.4のアルゴリズムを使用してネストされたホストを判別し、それを返します。 多くの場合、クラスまたはインタフェースはそれ自体のみで構成されるネストに属しており、その場合、このメソッドはクラスまたはインタフェースがネストされたホストであることを示すthis
を返します。この
Class
オブジェクトがプリミティブ型、配列型またはvoid
を表す場合、このメソッドは、表現されたエンティティがそれ自体で構成されるネストに属し、ネストされたホストであることを示すthis
を返します。- 戻り値:
- このクラスまたはインタフェースのネスト・ホスト
- 例外:
SecurityException
- 返されるクラスが現在のクラスではなく、セキュリティ・マネージャであるsが存在し、呼出し元のクラス・ローダーが返されるクラスのクラス・ローダーとs.checkPackageAccess()
の呼出しの上位または同じではない場合、返されるクラスのパッケージへのアクセスは拒否されます。- Java Virtual Machine仕様を参照してください:
-
4.7.28
NestHost
属性
4.7.29NestMembers
属性
5.4.4アクセス制御 - 導入されたバージョン:
- 11
-
isNestmateOf
-
getNestMembers
public Class<?>[] getNestMembers()このClass
オブジェクトが属する、ネストされたクラスまたはインタフェースのメンバーであるすべてのクラスおよびインタフェースを表すClass
オブジェクトを含む配列を返します。 最初に、このメソッドは、このClass
オブジェクトによって表されるクラスまたはインタフェースが属するネストの「ホストのネスト」、H
を取得します。 返される配列のゼロ番目の要素はH
です。 次に、H
によってネストのメンバーとして記録されるクラスまたはインタフェースC
ごとに、このメソッドはC
(現在のClass
オブジェクトの「定義クラス・ローダー」の使用)のClass
オブジェクトを取得し、C
が属するネストの「ホストのネスト」を取得しようとします。H
によってネストのメンバーとして記録され、H
をネスト・ホストとして判別できるクラスおよびインタフェースは、戻される配列の後続の要素によって示されます。 このような要素の順序は指定されません。 重複は許可されます。この
Class
オブジェクトがプリミティブ型、配列型またはvoid
を表す場合、このメソッドはthis
を含む単一要素配列を返します。- APIのノート:
- 返される配列には、
NestMembers
属性に記録されたネスト・メンバーのみが含まれ、Lookup::defineHiddenClass
を介してネストに追加された非表示クラスは含まれません。 - 戻り値:
- このクラスまたはインタフェースと同じネスト内のすべてのクラスおよびインタフェースの配列
- 例外:
SecurityException
- 返されるクラスが現在のクラスではない場合、およびセキュリティ・マネージャであるsが存在し、呼出し元のクラス・ローダーが、返されたクラスのクラス・ローダーとs.checkPackageAccess()
の呼出しの上位または同じではない場合、返されたクラスのパッケージへのアクセスは拒否されます。- Java Virtual Machine仕様を参照してください:
-
4.7.28
NestHost
属性
4.7.29NestMembers
属性 - 導入されたバージョン:
- 11
- 関連項目:
-
descriptorString
public String descriptorString()このClass
オブジェクトによって表されるエンティティ(クラス、インタフェース、配列クラス、プリミティブ型またはvoid
)の記述子文字列を返します。この
Class
オブジェクトが配列クラスではなくクラスまたはインタフェースを表す場合:- クラスまたはインタフェースがhiddenでない場合、結果はクラスまたはインタフェースのフィールド記述子(JVMS 4.3.2)になります。 結果記述子文字列を使用して
ClassDesc::ofDescriptor
をコールすると、このクラスまたはインタフェースを記述するClassDesc
が生成されます。 - クラスまたはインタフェースがhiddenの場合、結果は次の形式の文字列になります:
"L" +
N+ "." + <suffix> + ";"
Lookup::defineHiddenClass
に渡されるclass
ファイルによって示される内部形式でエンコードされた「バイナリ名」で、<suffix>
は修飾されていない名前です。 非表示のクラスまたはインタフェースには「名目記述子」がありません。 結果文字列が型記述子ではありません。
この
Class
オブジェクトが配列クラスを表す場合、結果は、配列のネストの深さを表す1つ以上の'[
'文字と、要素タイプの記述子文字列で構成される文字列になります。- 要素タイプがhiddenクラスまたはインタフェースでない場合、この配列クラスは名目的に記述できます。 結果記述子文字列を使用して
ClassDesc::ofDescriptor
をコールすると、この配列クラスを記述するClassDesc
が生成されます。 - 要素タイプがhiddenクラスまたはインタフェースの場合、この配列クラスは名目的に記述できません。 結果文字列が型記述子ではありません。
この
Class
オブジェクトがプリミティブ型またはvoid
を表す場合、結果はプリミティブ型またはvoid
("B", "C", "D", "F", "I", "J", "S", "Z", "V"
) (JVMS 4.3.2)に対応する一文字コードであるフィールド記述子文字列になります。- 定義:
- インタフェース
TypeDescriptor
内のdescriptorString
- 戻り値:
- この
Class
オブジェクトの記述子文字列 - Java Virtual Machine仕様を参照してください:
-
4.3.2 フィールド記述子
- 導入されたバージョン:
- 12
- クラスまたはインタフェースがhiddenでない場合、結果はクラスまたはインタフェースのフィールド記述子(JVMS 4.3.2)になります。 結果記述子文字列を使用して
-
componentType
public Class<?> componentType()配列型を説明する場合は、Class
のコンポーネント型を返します。それ以外の場合は、null
を返します。- 定義:
- インタフェース
TypeDescriptor.OfField<T>
内のcomponentType
- 実装要件:
getComponentType()
と同等です。- 戻り値:
Class
はコンポーネント・タイプを説明します。または、Class
が配列型を記述しない場合はnull
- 導入されたバージョン:
- 12
-
arrayType
public Class<?> arrayType()コンポーネント型がこのClassによって記述されている配列型のClass
を返します。- 定義:
- インタフェース
TypeDescriptor.OfField<T>
内のarrayType
- 戻り値:
- 配列型について説明する
Class
- 例外:
UnsupportedOperationException
- このコンポーネント・タイプがvoidの場合、または結果の配列タイプのディメンション数が255を超える場合。- Java Virtual Machine仕様を参照してください:
-
「4.3.2 フィールド記述子」
「4.4.1CONSTANT_Class_info
構造」 - 導入されたバージョン:
- 12
-
describeConstable
-
isHidden
public boolean isHidden()基礎となるクラスが非表示クラスである場合にのみ、true
を返します。- 戻り値:
- このクラスが非表示クラスの場合にのみ
true
。 - 導入されたバージョン:
- 15
- 関連項目:
-
getPermittedSubclasses
public Class<?>[] getPermittedSubclasses()このクラスまたはインタフェースがシールされている場合、このクラスまたはインタフェースの拡張または実装を許可された直接のサブインタフェースまたはサブクラスを表すClass
オブジェクトを含む配列を返します。 このような要素の順序は指定されません。 このシール済クラスまたはインタフェースに許可されたサブクラスがない場合、配列は空です。 このClass
オブジェクトがプリミティブ型、void
、配列型、またはシールされていないクラスやインタフェースを表す場合、つまりisSealed()
がfalse
を返す場合、このメソッドはnull
を返します。 逆に、isSealed()
からtrue
が返された場合、このメソッドはnull以外の値を返します。 このメソッドは、このクラスまたはインタフェースの許可された直接サブインタフェースまたはサブクラスとして記録されるクラスまたはインタフェースC
ごとに、C
(現在のClass
オブジェクトの「定義クラス・ローダー」の使用)のClass
オブジェクトを取得しようとします。 取得可能で、このクラスまたはインタフェースの直接のサブインタフェースまたはサブクラスであるClass
オブジェクトは、返される配列の要素によって示されます。Class
オブジェクトを取得できない場合は、暗黙的に無視され、結果配列には含まれません。- 戻り値:
- このクラスまたはインタフェースの許可されたサブクラスの
Class
オブジェクトの配列。このクラスまたはインタフェースがシールされていない場合はnull
。 - 例外:
SecurityException
- セキュリティ・マネージャsが存在し、呼出し側クラス・ローダーが、返されたクラスと同じでないか、そのクラスのクラス・ローダーの上位クラスではない場合、s.checkPackageAccess()
の呼出しは、返された配列内の任意のクラスのパッケージへのアクセスを拒否します。- Java言語仕様を参照してください:
-
8.1 クラス宣言
9.1 インタフェース宣言 - 導入されたバージョン:
- 17
-
isSealed
public boolean isSealed()このClass
オブジェクトがシール済クラスまたはインタフェースを表す場合にのみ、true
を返します。 このClass
オブジェクトがプリミティブ型、void
または配列型を表す場合、このメソッドはfalse
を返します。 シール済クラスまたはインタフェースには、(0(ゼロ))で許可されたサブクラスがあります。getPermittedSubclasses()
は、シール済クラスまたはインタフェースに対してnull以外の空の値を返す可能性があります。- 戻り値:
- この
Class
オブジェクトがシール済クラスまたはインタフェースを表す場合のみtrue
。 - Java言語仕様を参照してください:
-
8.1 クラス宣言
9.1 インタフェース宣言 - 導入されたバージョン:
- 17
-