- 型パラメータ:
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を返します。booleanisAnnotationPresent(Class<? extends Annotation> annotationClass) 指定された型の注釈がこの要素に存在する場合はtrueを返し、そうでない場合はfalseを返します。boolean基本となるクラスが匿名クラスである場合だけtrueを返します。booleanisArray()このClassオブジェクトが配列クラスを表すかどうかを判定します。booleanisAssignableFrom(Class<?> cls) このClassオブジェクトが表すクラスまたはインタフェースが、指定されたClassパラメータが表すクラスまたはインタフェースと等しいかどうか、あるいはそのスーパー・クラスあるいはスーパー・インタフェースであるかどうかを判定します。booleanisEnum()このクラスがソース・コードでenumとして宣言された場合だけtrueを返します。booleanisHidden()基礎となるクラスが非表示クラスである場合にのみ、trueを返します。booleanisInstance(Object obj) 指定されたObjectが、このClassが表すオブジェクトと代入互換の関係にあるかどうかを判定します。booleanこのClassオブジェクトがインタフェース・タイプを表すかどうかを判定します。boolean基本となるクラスがローカル・クラスである場合だけtrueを返します。boolean基本となるクラスがメンバー・クラスである場合だけtrueを返します。booleanisNestmateOf(Class<?> c) 指定されたClassが、このClassオブジェクトによって表されるクラスまたはインタフェースをネストしたものであるかどうかを判定します。booleanこのClassオブジェクトがプリミティブ型またはvoidのどちらを表すかを決定します。booleanisRecord()このクラスがレコード・クラスである場合のみ、trueを返します。booleanisSealed()この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("[LN;")をコールすると、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- 指定されたモジュールまたは名前がnullLinkageError- リンケージに失敗した場合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などのプリミティブ・ラッパー・クラスで定義されたTYPEpublic 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 booleanZbyteBcharC「バイナリ名」 Nとのクラスまたはインタフェース LN;doubleDfloatFintIlongJshortSこの
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)メソッドに委任して、モジュール名とリソースの絶対名で呼び出します。 名前付きモジュールのリソースは、ModulegetResourceAsStreamメソッドで指定されたカプセル化のルールに従うため、このメソッドは、リソースがコール元のモジュールに対して開かれていないパッケージ内の".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)メソッドに委任して、モジュール名とリソースの絶対名で呼び出します。 名前付きモジュールのリソースは、ModulegetResourceAsStreamメソッドで指定されたカプセル化のルールに従うため、このメソッドは、リソースがコール元のモジュールに対して開かれていないパッケージ内の".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の場合、結果は次の形式の文字列になります:
ここで、Nは"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
-