- 型パラメータ:
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
クラスのメソッドによって公開される特性には関係ありません。 - Java言語仕様を参照してください:
-
15.8.2 クラス・リテラル
- 導入されたバージョン:
- 1.0
- 関連項目:
ClassLoader.defineClass(byte[], int, int)
, 直列化された形式
-
ネストされたクラスのサマリー
インタフェース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
オブジェクトを返します。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<?>[]
シール済クラス(Java言語のプレビュー機能)に関連付けられます。
このクラスまたはインタフェースがシールされている場合、このクラスまたはインタフェースの拡張または実装を許可された直接のサブインタフェースまたはサブクラスを表す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
オブジェクトがプリミティブ型を表すかどうかを判定します。boolean
isRecord()
このクラスがレコード・クラスである場合のみ、true
を返します。boolean
isSealed()
シール済クラス(Java言語のプレビュー機能)に関連付けられます。
この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
というクラスが初期化されます。- パラメータ:
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
オブジェクトを返します。 クラスまたはインタフェース(getName
から返されるのと同じ書式)の完全修飾名を指定した場合、このメソッドはクラスまたはインタフェースを検索してロードしようとします。 クラスまたはインタフェースをロードする際には、指定されたクラス・ローダーが使用されます。loader
パラメータがnullの場合、クラスはブートストラップ・クラス・ローダーを使ってロードされます。 クラスが初期化されるのは、initialize
パラメータがtrue
で、その初期化が以前に行われていない場合だけです。name
がプリミティブ型またはvoidを示す場合、無名パッケージ内でname
という名前のユーザー定義のクラスを見つけようとします。 このため、このメソッドを使って、プリミティブ型またはvoidを表すClass
オブジェクトを取得することはできません。name
が配列クラスを示す場合、配列クラスのコンポーネント型はロードされますが、初期化されません。たとえば、インスタンス・メソッドでは、
Class.forName("Foo")
Class.forName("Foo", true, this.getClass().getClassLoader())
- パラメータ:
name
- 要求するクラスの完全指定の名前initialize
-true
でクラスが(リンクを意味)を初期化する場合。 「Java言語仕様」の12.4の項を参照してください。loader
- クラスのロード元である必要があるクラス・ローダー- 戻り値:
- 要求するクラスを表すクラス・オブジェクト
- 例外:
LinkageError
- リンケージに失敗した場合ExceptionInInitializerError
- このメソッドによる初期化に失敗した場合ClassNotFoundException
- 指定されたクラス・ローダーによってクラスが見つからなかった場合SecurityException
- セキュリティ・マネージャが存在し、loader
がnull
で、呼び出し側クラス・ローダーがnull
ではなく、呼び出し元にRuntimePermission
("getClassLoader")
がない場合- Java言語仕様を参照してください:
-
12.2 クラスおよびインタフェースのロード
12.3 クラスおよびインタフェースのリンク
12.4 クラスおよびインタフェースの初期化 - 導入されたバージョン:
- 1.2
- 関連項目:
forName(String)
,ClassLoader
-
forName
与えられたモジュール内の与えられた「バイナリ名」を持つClass
を返します。このメソッドは、クラスまたはインタフェースを検索してロードしようとします。 クラスをリンクしません。また、クラスのイニシャライザを実行しません。 クラスが見つからない場合、このメソッドは
null
を返します。指定されたモジュールのクラス・ローダーが他のモジュールを定義し、指定された名前が別のモジュールで定義されたクラスである場合、このメソッドはクラスがロードされた後に
null
を返します。このメソッドは、リクエストされたクラスが呼び出し元からアクセス可能かどうかをチェックしません。
- APIのノート:
- このメソッドは、
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
-
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
オブジェクトがプリミティブ型を表すかどうかを判定します。8つのプリミティブ型とvoidを表す、9つの定義済
Class
オブジェクトがあります。 これらはJava仮想マシンが作成し、該当するプリミティブ型と同じ名前を持ちます。つまり、boolean
、byte
、char
、short
、int
、long
、float
、およびdouble
です。これらのオブジェクトには、public static final変数を使う方法によってのみアクセスできます。また、このメソッドが
true
を返すのは、これらの9つのClass
オブジェクトに限定されます。- 定義:
- インタフェース
TypeDescriptor.OfField<T>
内のisPrimitive
- 戻り値:
- このクラスがプリミティブ型を表す場合に限りtrue
- 導入されたバージョン:
- 1.1
- 関連項目:
Boolean.TYPE
,Character.TYPE
,Byte.TYPE
,Short.TYPE
,Integer.TYPE
,Long.TYPE
,Float.TYPE
,Double.TYPE
,Void.TYPE
-
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" 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"
- 戻り値:
- この
Class
オブジェクトによって表されるクラス、インタフェースまたはその他のエンティティの名前。 - Java言語仕様を参照してください:
-
13.1 バイナリの形式
-
getClassLoader
public ClassLoader getClassLoader()クラスのクラス・ローダーを返します。 実装によっては、nullを使ってブートストラップ・クラス・ローダーを表すこともできます。 このメソッドは、このクラスがブートストラップ・クラス・ローダーでロードされた場合に、そのような実装でnullを返します。この
Class
オブジェクトがプリミティブ型またはvoidを表す場合は、nullが返されます。- 戻り値:
- この
Class
オブジェクトによって表されるクラスまたはインタフェースをロードしたクラス・ローダー。 - 例外:
SecurityException
- セキュリティ・マネージャが存在し、呼び出し側クラス・ローダーがnull
でなく、クラス・ローダーがリクエストされたクラスのクラス・ローダーと同じでもなく、祖先でもなく、呼び出し元にRuntimePermission
("getClassLoader")
がない場合- 関連項目:
ClassLoader
,SecurityManager.checkPermission(java.security.Permission)
,RuntimePermission
-
getModule
public Module getModule()このクラスまたはインタフェースがメンバーであるモジュールを返します。 このクラスが配列型を表す場合、このメソッドは要素型のModule
を返します。 このクラスがプリミティブ型またはvoidを表す場合は、java.base
モジュールのModule
オブジェクトが返されます。 このクラスが名前のないモジュールにある場合、このクラスのクラス・ローダーのunnamedModule
が返されます。- 戻り値:
- このクラスまたはインタフェースがメンバーであるモジュール
- 導入されたバージョン:
- 9
-
getTypeParameters
public TypeVariable<Class<T>>[] getTypeParameters()GenericDeclaration
オブジェクトによって表されるジェネリック宣言で宣言された型変数を表すTypeVariable
オブジェクトの配列を宣言順に返します。 基になるジェネリック宣言で型変数が宣言されていない場合は、長さ0の配列が返されます。- 定義:
getTypeParameters
、インタフェース:GenericDeclaration
- 戻り値:
- このジェネリック宣言で宣言された型変数を表す
TypeVariable
オブジェクトの配列 - 例外:
GenericSignatureFormatError
- このジェネリック宣言のジェネリック・シグネチャが、「Java Virtual Machine仕様」の4.7.9セクションで指定された形式に準拠していない場合- 導入されたバージョン:
- 1.5
-
getSuperclass
このClass
で表されるエンティティ(クラス、インタフェース、プリミティブ型またはvoid)の直接スーパークラスを表すClass
を返します。 このClass
が、Object
クラス、インタフェース、プリミティブ型、またはvoidを表す場合、nullが返されます。 このClass
オブジェクトが配列クラスを表す場合は、Object
クラスを表すClass
オブジェクトが返されます。- 戻り値:
- この
Class
オブジェクトによって表されるクラスの直接スーパー・クラス
-
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
- 関連項目:
Array
-
getModifiers
public int getModifiers()このクラスまたはインタフェースのJava言語修飾子を整数型に符号化して返します。 修飾子は、public
、protected
、private
、final
、static
、abstract
、およびinterface
用のJava仮想マシンの定数から構成されます。これらは、Modifier
クラスのメソッドを使ってデコードしなければいけません。基本となるクラスが配列クラスの場合、
public
、private
、およびprotected
の各修飾子はコンポーネント型の修飾子と同じです。 このClass
オブジェクトがプリミティブ型またはvoidを表す場合、そのpublic
修飾子は常にtrue
、protected
およびprivate
修飾子は常にfalse
です。 このClass
オブジェクトが配列クラス、プリミティブ型またはvoidを表す場合、そのfinal
修飾子は常にtrue
で、そのインタフェース修飾子は常にfalse
です。 その他の修飾子の値は、この仕様では判定されません。修飾子エンコーディングは、「Java Virtual Machine仕様」の4.1セクションで定義されています。
- 戻り値:
- このクラスの修飾子を表す
int
- 導入されたバージョン:
- 1.1
- 関連項目:
Modifier
-
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
public String getSimpleName()ソース・コード内で指定されたとおり、基本となるクラスの単純名を返します。 基本となるクラスが匿名の場合、空の文字列を返します。配列の単純名は、「[]」が付加されたコンポーネント型の単純名です。 特に、コンポーネント型が匿名である配列の単純名は、「[]」です。
- 戻り値:
- 基本となるクラスの単純名
- 導入されたバージョン:
- 1.5
-
getTypeName
public String getTypeName()このクラスまたはインタフェースの名前の情報文字列を返します。- 定義:
getTypeName
、インタフェース:Type
- 戻り値:
- このクラスまたはインタフェースの名前を表す情報文字列
- 導入されたバージョン:
- 1.8
-
getCanonicalName
public String getCanonicalName()「Java言語仕様」で定義されている基礎となるクラスの正規名を返します。 基礎となるクラスに正規名がない場合、null
を返します。 正規名のないクラスは次のとおりです:- 戻り値:
- 存在する場合は基本となるクラスの正規名。そうでない場合は
null
。 - 導入されたバージョン:
- 1.5
-
isAnonymousClass
public boolean isAnonymousClass()基本となるクラスが匿名クラスである場合だけtrue
を返します。- APIのノート:
- 匿名クラスは「非表示クラス」ではありません。
- 戻り値:
- このクラスが匿名クラスである場合だけ
true
。 - 導入されたバージョン:
- 1.5
-
isLocalClass
public boolean isLocalClass()基本となるクラスがローカル・クラスである場合だけtrue
を返します。- 戻り値:
- このクラスがローカル・クラスである場合だけ
true
。 - 導入されたバージョン:
- 1.5
-
isMemberClass
public boolean isMemberClass()基本となるクラスがメンバー・クラスである場合だけtrue
を返します。- 戻り値:
- このクラスがメンバー・クラスである場合だけ
true
。 - 導入されたバージョン:
- 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
オブジェクトが、アクセス可能なpublicフィールドを持たないクラスまたはインタフェースを表す場合、このメソッドは長さ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
オブジェクトによって表されるクラスまたはインタフェースとします:- メソッドの組合は以下のもので構成される:
- Cは、
getDeclaredMethods()
によって返されるpublicインスタンスと静的メソッドを宣言し、パブリック・メソッドのみを含むようにフィルタリングしました。 - Cが
Object
以外のクラスである場合、このアルゴリズムをCのスーパークラスに再帰的に呼び出す結果を含めます。 - このアルゴリズムをCのすべての直接スーパー・インタフェースに再帰的に呼び出す結果を含めますが、インスタンス・メソッドのみを含みます。
- Cは、
- ステップ1のUnionは、同じシグネチャ(名前、パラメータ型)と戻り値の型を持つメソッドのサブセットに分割されます。
- そのような各サブセット内では、最も具体的なメソッドのみが選択されます。 メソッドMを、同じシグネチャと戻り値の型を持つメソッドのセットからのメソッドとします。 Mは、NがMよりも特異的であるように、同じ集合からそのようなメソッドN!= Mが存在しない場合に最も具体的です。 NはMよりも具体的です:
- Nはクラスによって宣言され、Mはインタフェースによって宣言されます。または
- NとMはどちらもクラスによって宣言されており、どちらもインタフェースで宣言されています。N宣言型は、宣言型(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
オブジェクトが配列型を表す場合、このメソッドはObject
からclone()
以外の配列型によって継承されたパブリック・メソッドを検出します。この
Class
オブジェクトがインタフェースを表す場合、このメソッドはObject
から暗黙的に宣言されたメソッドを検出しません。 したがって、このインタフェースまたはそのスーパー・インタフェースのいずれかで明示的に宣言されているメソッドがない場合、このメソッドはメソッドを検出しません。このメソッドは、名前が"
<init>
"または"<clinit>
"のメソッドを検出しません。一般に、反映されるメソッドは、以下の4ステップ・アルゴリズムによって決定されます。 Cをこの
Class
オブジェクトによって表されるクラスまたはインタフェースとします:- メソッドの組合は以下のもので構成される:
- Cは
getDeclaredMethods()
によって返されたpublicインスタンスと静的メソッドを宣言し、与えられたname
とparameterTypes
に一致するパブリック・メソッドのみを含むようにフィルタリングしました - Cが
Object
以外のクラスである場合、このアルゴリズムをCのスーパークラスに再帰的に呼び出す結果を含めます。 - このアルゴリズムをCのすべての直接スーパー・インタフェースに再帰的に呼び出す結果を含めますが、インスタンス・メソッドのみを含みます。
- Cは
- この共用体は、同じ戻り型(ステップ1からのメソッドの選択でも、メソッド名とパラメータ型が同じであることが保証されます)を持つメソッドのサブセットに分割されます。
- そのような各サブセット内では、最も具体的なメソッドのみが選択されます。 メソッドMを、同じVMシグネチャ(戻り値の型、名前、パラメータ型)を持つ一連のメソッドのメソッドとします。 Mは、NがMよりも特異的であるように、同じ集合からそのようなメソッドN!= Mが存在しない場合に最も具体的です。 NはMよりも具体的です:
- Nはクラスによって宣言され、Mはインタフェースによって宣言されます。または
- NとMはどちらもクラスによって宣言されており、どちらもインタフェースで宣言されています。N宣言型は、宣言型(MとNの宣言型が同じ型の場合、MとNは同じメソッドです)と同じか、またはサブ型です。
- このアルゴリズムの結果は、ステップ3のすべての選択されたメソッドの中で最も特定の戻り値の型を持つメソッドから任意に選択されます。 ステップ3のすべての選択されたメソッドのセットから、メソッドMの戻り型をRとします。 Mは、戻り値の型S!= Rを持ち、SがR.classによって決定されたRのサブ型であるような、同じセットからのそのようなメソッドN!= Mがない場合、最も具体的な戻り型を持つメソッドです。
isAssignableFrom(java.lang.Class<?>)
(S.class)。
- APIのノート:
- Java言語では、同じシグネチャで異なる戻り値の型を持つ複数のメソッドを宣言することを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
- 一致するメソッドが見つからない場合。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()
の呼出しがこのクラスのパッケージへのアクセスを許可しない
- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
- 導入されたバージョン:
- 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以外の値を返します。- 戻り値:
- このレコード・クラスのすべてのレコード・コンポーネントを表す
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メソッドが含まれますが、継承されたメソッドは除外されます。この
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コンストラクタです。 返された配列内の要素は、ソートされていたり、特定の順序になっていたりすることはありません。 クラスがデフォルトのコンストラクタを持つ場合、このコンストラクタは返された配列にあります。 このメソッドは、このClass
オブジェクトがインタフェース、プリミティブ型、配列クラス、またはvoidを表す場合には長さが0の配列を返します。「Java言語仕様」の項8.2を参照してください。
- 戻り値:
- このクラスの宣言されたすべてのコンストラクタを表す
Constructor
オブジェクトの配列 - 例外:
SecurityException
- セキュリティ・マネージャsが存在し、次の条件のどれかが満たされる場合:- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
RuntimePermission("accessDeclaredMembers")
を持つs.checkPermission
メソッドの呼出しがこのクラス内の宣言されたコンストラクタへのアクセスを許可しない - 呼出し側のクラス・ローダーが同じでないか、現在のクラス・ローダーの祖先と
s.checkPackageAccess()
の呼出しがこのクラスのパッケージへのアクセスを許可しない
- 呼出し側のクラス・ローダーがこのクラスのクラス・ローダーと同じでなく、かつ
- 導入されたバージョン:
- 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
- 一致するメソッドが見つからない場合。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
- 関連項目:
Module.getResourceAsStream(String)
-
-
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
- 関連項目:
ProtectionDomain
,SecurityManager.checkPermission(java.security.Permission)
,RuntimePermission
-
desiredAssertionStatus
public boolean desiredAssertionStatus()このメソッドの呼出し時にこのクラスを初期化する場合、クラスに割り当てられるアサーション・ステータスを返します。 このクラスのアサーション・ステータスが設定されている場合は、最新設定が返されます。それ以外の場合で、このクラスに関連するパッケージのデフォルトのアサーション・ステータスが存在するときは、最適なパッケージのデフォルトのアサーション・ステータスの最新設定が返されます。それ以外の場合で、このクラスがシステム・クラスでない(つまりクラス・ローダーを保持する)ときは、クラス・ローダーのデフォルトのアサーション・ステータスが返されます。それ以外の場合、システム・クラスのデフォルトのアサーション・ステータスが返されます。- APIのノート:
- このメソッドを必要とするプログラマはほとんどいません。JDK自体の利点を得るために提供されています。 (このメソッドにより、初期化時にアサーションが有効にするかどうかをクラスが判別できる)。 指定されたクラスの初期化時に、このメソッドが、指定されたクラスに関連付けられた実際のアサーション・ステータスを返すとは限らないことに留意してください。
- 戻り値:
- 対象とする、指定されたクラスのアサーション・ステータス
- 導入されたバージョン:
- 1.4
- 関連項目:
ClassLoader.setClassAssertionStatus(java.lang.String, boolean)
,ClassLoader.setPackageAssertionStatus(java.lang.String, boolean)
,ClassLoader.setDefaultAssertionStatus(boolean)
-
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 - 導入されたバージョン:
- 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
public boolean isNestmateOf(Class<?> c)指定されたClass
が、このClass
オブジェクトによって表されるクラスまたはインタフェースをネストしたものであるかどうかを判定します。 2つのクラスまたはインタフェースが同じ「ホストのネスト」を持つ場合、それらはネストされます。- パラメータ:
c
- チェックするクラス- 戻り値:
- このクラスと
c
が同じネストのメンバーである場合はtrue
、それ以外の場合はfalse
。 - 導入されたバージョン:
- 11
-
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
- 関連項目:
getNestHost()
-
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
- APIのノート:
- これは
forName(java.lang.String)
の厳密な逆ではありません。共通名を共有しているが、異なるクラス・ローダーを持つ個別のクラスは、同一の記述子文字列を持ちます。 - 戻り値:
- この
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
- 導入されたバージョン:
- 12
-
describeConstable
このインスタンスの名目記述子を返します(作成可能な場合)、作成できない場合は空のOptional
を返します。- 定義:
- インタフェース
Constable
内のdescribeConstable
- 戻り値:
- 最終的な名目記述子を含む
Optional
、または作成できない場合は空のOptional
。 - 導入されたバージョン:
- 12
-
isHidden
public boolean isHidden()基礎となるクラスが非表示クラスである場合にのみ、true
を返します。- 戻り値:
- このクラスが非表示クラスの場合にのみ
true
。 - 導入されたバージョン:
- 15
- 関連項目:
MethodHandles.Lookup.defineHiddenClass(byte[], boolean, java.lang.invoke.MethodHandles.Lookup.ClassOption...)
-
getPermittedSubclasses
public Class<?>[] getPermittedSubclasses()このメソッドは、Java言語のプレビュー機能である「シール済クラス」に関連付けられています。 プレビュー機能は、将来のリリースで削除されるか、Java言語の永続機能にアップグレードされる可能性があります。
このクラスまたはインタフェースがシールされている場合、このクラスまたはインタフェースの拡張または実装を許可された直接のサブインタフェースまたはサブクラスを表す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 インタフェース宣言 - 導入されたバージョン:
- 15
-
isSealed
public boolean isSealed()このメソッドは、Java言語のプレビュー機能である「シール済クラス」に関連付けられています。 プレビュー機能は、将来のリリースで削除されるか、Java言語の永続機能にアップグレードされる可能性があります。
このClass
オブジェクトがシール済クラスまたはインタフェースを表す場合にのみ、true
を返します。 このClass
オブジェクトがプリミティブ型、void
または配列型を表す場合、このメソッドはfalse
を返します。 シール済クラスまたはインタフェースには、(0(ゼロ))で許可されたサブクラスがあります。getPermittedSubclasses()
は、シール済クラスまたはインタフェースに対してnull以外の空の値を返す可能性があります。- 戻り値:
- この
Class
オブジェクトがシール済クラスまたはインタフェースを表す場合のみtrue
。 - Java言語仕様を参照してください:
-
8.1 クラス宣言
9.1 インタフェース宣言 - 導入されたバージョン:
- 15
-