モジュール java.base
パッケージ java.lang

クラスClass<T>

java.lang.Object
java.lang.Class<T>
型パラメータ:
T - このClassオブジェクトでモデル化されるクラスの型。 たとえば、String.classの型は Class<String>である。 モデル化するクラスが不明な場合はClass<?>を使用する。
すべての実装されたインタフェース:
Serializable, Constable, TypeDescriptor, TypeDescriptor.OfField<Class<?>>, AnnotatedElement, GenericDeclaration, Type

public final class Class<T> extends Object implements Serializable, GenericDeclaration, Type, AnnotatedElement, TypeDescriptor.OfField<Class<?>>, Constable
Classクラスのインスタンスは、実行中のJavaアプリケーションのクラスおよびインタフェースを表します。 enumクラスとrecordクラスはクラスの一種で、annotationインタフェースはインタフェースの一種です。 同様にどの配列も、同じ要素のタイプおよび次元数を持つすべての配列により共有されるClassオブジェクトとしてリフレクトされるクラスに属します。 プリミティブJava型(booleanbytecharshort intlongfloat、およびdouble)やキーワードvoidも、Classオブジェクトとして表されます。

Classには、publicコンストラクタはありません。 かわりに、Classオブジェクトは、次のいずれかのメソッドの呼出しによってclassファイルのバイトからクラスが導出されると、Java Virtual Machineによって自動的に構築されます:

クラス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クラスのメソッドによって公開される特性には関係ありません。

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を返します。
    <U> Class<? extends U>
    asSubclass(Class<U> clazz)
    指定されたクラス・オブジェクトによって表されるクラスのサブクラスを表すためにこのClassオブジェクトをキャストします。
    cast(Object obj)
    このClassオブジェクトが表すクラスまたはインタフェースにオブジェクトをキャストします。
    配列型を説明する場合は、Classのコンポーネント型を返します。それ以外の場合は、nullを返します。
    このインスタンスの名目記述子を返します(作成可能な場合)、作成できない場合は空のOptionalを返します。
    このClassオブジェクトによって表されるエンティティ(クラス、インタフェース、配列クラス、プリミティブ型またはvoid)の記述子文字列を返します。
    boolean
    このメソッドの呼出し時にこのクラスを初期化する場合、クラスに割り当てられるアサーション・ステータスを返します。
    static Class<?>
    forName(Module module, String name)
    与えられたモジュール内の与えられた「バイナリ名」を持つClassを返します。
    static Class<?>
    forName(String className)
    指定された文字列名を持つクラスまたはインタフェースに関連付けられた、Classオブジェクトを返します。
    static Class<?>
    forName(String name, boolean initialize, ClassLoader loader)
    指定されたクラス・ローダーを使って、指定された文字列名を持つクラスまたはインタフェースに関連付けられたClassオブジェクトを返します。
    Classオブジェクトによって表されるエンティティのスーパーインタフェースを指定する型の使用を表すAnnotatedTypeオブジェクトの配列を返します。
    Classオブジェクトによって表されるエンティティのスーパークラスを指定する型の使用を表すAnnotatedTypeオブジェクトを返します。
    <A extends Annotation>
    A
    getAnnotation(Class<A> annotationClass)
    存在する場合は、この要素の指定された型の注釈を返し、そうでない場合はnullを返します。
    この要素に存在する注釈を返します。
    <A extends Annotation>
    A[]
    getAnnotationsByType(Class<A> annotationClass)
    この要素に関連付けられている注釈を返します。
    「Java言語仕様」で定義されている基礎となるクラスの正規名を返します。
    Class<?>[]
    このClassオブジェクトが表すクラスのメンバーである、すべてのpublicクラスおよびインタフェースを表すClassオブジェクトを格納している配列を返します。
    クラスのクラス・ローダーを返します。
    配列のコンポーネント型を表すClassを返します。
    getConstructor(Class<?>... parameterTypes)
    このClassオブジェクトが表すクラスの指定されたpublicコンストラクタをリフレクトするConstructorオブジェクトを返します。
    このClassオブジェクトが表すクラスのすべてのpublicコンストラクタをリフレクトするConstructorオブジェクトを格納している配列を返します。
    <A extends Annotation>
    A
    getDeclaredAnnotation(Class<A> annotationClass)
    直接存在する場合は、この要素の指定された型の注釈を返し、そうでない場合はnullを返します。
    この要素に直接存在する注釈を返します。
    <A extends Annotation>
    A[]
    getDeclaredAnnotationsByType(Class<A> annotationClass)
    直接存在する間接的に存在する場合は、この要素の指定された型の注釈を返します。
    Class<?>[]
    このClassオブジェクトが表すクラスのメンバーとして宣言されたすべてのクラスおよびインタフェースをリフレクトするClassオブジェクトの配列を返します。
    getDeclaredConstructor(Class<?>... parameterTypes)
    このClassオブジェクトが表すクラスまたはインタフェースの指定されたコンストラクタをリフレクトするConstructorオブジェクトを返します。
    このClassオブジェクトが表すクラスによって宣言されたすべてのコンストラクタをリフレクトするConstructorオブジェクトの配列を返します。
    このClassオブジェクトが表すクラスまたはインタフェースの、指定された宣言されたフィールドをリフレクトするFieldオブジェクトを返します。
    このClassオブジェクトが表すクラスまたはインタフェースによって宣言されたすべてのフィールドをリフレクトするFieldオブジェクトの配列を返します。
    getDeclaredMethod(String name, Class<?>... parameterTypes)
    このClassオブジェクトが表すクラスまたはインタフェースの、指定された宣言されたメソッドをリフレクトするMethodオブジェクトを返します。
    この Classオブジェクトによって表されるクラスまたはインタフェースのすべての宣言されたメソッドをリフレクトするMethodオブジェクトが格納された配列を返します。これには、public、protected、デフォルト(package)アクセスおよびprivateメソッドが含まれますが、継承されたメソッドは除外されます。
    このClassオブジェクトが表すクラスまたはインタフェースが別のクラスのメンバーの場合は、それが宣言されたクラスを表すClassオブジェクトを返します。
    基本となるクラスを直接囲むクラスを返します。
    このClassオブジェクトが、コンストラクタ内のローカル・クラスまたは匿名クラスを表す場合は、基本となるクラスを直接囲むコンストラクタを表すConstructorオブジェクトを返します。
    このClassオブジェクトが、メソッド内のローカル・クラスまたは匿名クラスを表す場合は、基本となるクラスを直接囲むメソッドを表すMethodオブジェクトを返します。
    T[]
    このenumクラスの要素を返します。このClassオブジェクトがenumクラスを表さない場合はnullを返します。
    このClassオブジェクトが表すクラスまたはインタフェースの、指定されたpublicメンバー・フィールドをリフレクトするFieldオブジェクトを返します。
    このClassオブジェクトが表すクラスまたはインタフェースのすべてのアクセス可能なpublicフィールドをリフレクトする、Fieldオブジェクトを保持している配列を返します。
    このClassオブジェクトによって表されるクラスまたはインタフェースによって直接実装されるインタフェースを表すTypeを返します。
    このClassオブジェクトによって表されるエンティティ(クラス、インタフェース、プリミティブ型またはvoid)の直接スーパークラスを表すTypeを返します。
    Class<?>[]
    このClassオブジェクトが表すクラスまたはインタフェースによって直接実装されたインタフェースを返します。
    getMethod(String name, Class<?>... parameterTypes)
    このClassオブジェクトが表すクラスまたはインタフェースの、指定されたpublicメンバー・メソッドをリフレクトするMethodオブジェクトを返します。
    この Classオブジェクトによって表されるクラスまたはインタフェースのすべてのpublicメソッドをリフレクトするMethodオブジェクトを格納している配列を返します。これには、クラスまたはインタフェースで宣言されたもの、およびスーパー・クラスやスーパー・インタフェースから継承されたものも含まれます。
    int
    このクラスまたはインタフェースのJava言語修飾子を整数型に符号化して返します。
    このクラスまたはインタフェースがメンバーであるモジュールを返します。
    このClassオブジェクトによって表されるエンティティ(クラス、インタフェース、配列クラス、プリミティブ型またはvoid)の名前を返します。
    このClassオブジェクトが表すクラスまたはインタフェースが属する「ネスト」のネスト・ホストを返します。
    Class<?>[]
    このClassオブジェクトが属する、ネストされたクラスまたはインタフェースのメンバーであるすべてのクラスおよびインタフェースを表すClassオブジェクトを含む配列を返します。
    このクラスのパッケージを取得します。
    完全修飾パッケージ名を返します。
    Class<?>[]
    このクラスまたはインタフェースがシールされている場合、このクラスまたはインタフェースの拡張または実装を許可された直接のサブインタフェースまたはサブクラスを表すClassオブジェクトを含む配列を返します。
    このクラスのProtectionDomainを返します。
    このレコード・クラスのすべてのレコード・コンポーネントを表すRecordComponentオブジェクトの配列を返します。このクラスがレコード・クラスでない場合はnullを返します。
    指定された名前のリソースを探します。
    指定された名前のリソースを探します。
    このクラスの署名者を取得します。
    ソース・コード内で指定されたとおり、基本となるクラスの単純名を返します。
    Class<? super T>
    このClassで表されるエンティティ(クラス、インタフェース、プリミティブ型またはvoid)の直接スーパークラスを表すClassを返します。
    このクラスまたはインタフェースの名前の情報文字列を返します。
    GenericDeclarationオブジェクトによって表されるジェネリック宣言で宣言された型変数を表すTypeVariableオブジェクトの配列を宣言順に返します。
    boolean
    このClassオブジェクトが注釈インタフェースを表す場合はtrueを返します。
    boolean
    isAnnotationPresent(Class<? extends Annotation> annotationClass)
    指定された型の注釈がこの要素に存在する場合はtrueを返し、そうでない場合はfalseを返します。
    boolean
    基本となるクラスが匿名クラスである場合だけtrueを返します。
    boolean
    このClassオブジェクトが配列クラスを表すかどうかを判定します。
    boolean
    このClassオブジェクトが表すクラスまたはインタフェースが、指定されたClassパラメータが表すクラスまたはインタフェースと等しいかどうか、あるいはそのスーパー・クラスあるいはスーパー・インタフェースであるかどうかを判定します。
    boolean
    このクラスがソース・コードでenumとして宣言された場合だけtrueを返します。
    boolean
    基礎となるクラスが非表示クラスである場合にのみ、trueを返します。
    boolean
    指定されたObjectが、このClassが表すオブジェクトと代入互換の関係にあるかどうかを判定します。
    boolean
    このClassオブジェクトがインタフェース・タイプを表すかどうかを判定します。
    boolean
    基本となるクラスがローカル・クラスである場合だけtrueを返します。
    boolean
    基本となるクラスがメンバー・クラスである場合だけtrueを返します。
    boolean
    指定されたClassが、このClassオブジェクトによって表されるクラスまたはインタフェースをネストしたものであるかどうかを判定します。
    boolean
    指定されたClassオブジェクトがプリミティブ型を表すかどうかを判定します。
    boolean
    このクラスがレコード・クラスである場合のみ、trueを返します。
    boolean
    このClassオブジェクトがシール済クラスまたはインタフェースを表す場合にのみ、trueを返します。
    boolean
    このクラスに合成修飾子ビットが設定されている場合にのみ、trueを返します。
    非推奨。
    このメソッドは、チェック例外を含むnullaryコンストラクタによってスローされた例外をすべて伝播します。
    修飾子と型パラメータに関する情報を含む、このClassを記述する文字列を返します。
    オブジェクトを文字列に変換します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • メソッドの詳細

    • toString

      public String toString()
      オブジェクトを文字列に変換します。 文字列表現は、文字列"class"または"interface"の後にスペースが続き、getNameによって返される形式でクラスの名前が続きます。 このClassオブジェクトがプリミティブ型を表す場合、このメソッドはプリミティブ型の名前を返します。 このClassオブジェクトがvoidを表す場合は、「void」を返します。 このClassオブジェクトが配列型を表す場合、このメソッドは"class"とそれに続くgetNameを返します。
      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      このClassオブジェクトの文字列表現。
    • toGenericString

      public String toGenericString()
      修飾子と型パラメータに関する情報を含む、このClassを記述する文字列を返します。 文字列は型修飾子(ある場合)のリストとしてフォーマットされ、その後に(プリミティブ型およびclassenuminterface@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())
      このメソッドは、「Java言語仕様」12.212.3および12.4の項で指定されているロード、リンクまたは初期化に関連するエラーをスローすることに注意してください。 このメソッドは、要求されたクラスが呼出し側からアクセス可能であるかどうかをチェックしません。

      パラメータ:
      name - 要求するクラスの完全指定の名前
      initialize - trueでクラスが(リンクを意味)を初期化する場合。 「Java言語仕様」12.4の項を参照してください。
      loader - クラスのロード元である必要があるクラス・ローダー
      戻り値:
      要求するクラスを表すクラス・オブジェクト
      例外:
      LinkageError - リンケージに失敗した場合
      ExceptionInInitializerError - このメソッドによる初期化に失敗した場合
      ClassNotFoundException - 指定されたクラス・ローダーによってクラスが見つからなかった場合
      SecurityException - セキュリティ・マネージャが存在し、loadernullで、呼び出し側クラス・ローダーがnullではなく、呼び出し元にRuntimePermission ("getClassLoader")がない場合
      Java言語仕様を参照してください:
      12.2 クラスおよびインタフェースのロード
      12.3 クラスおよびインタフェースのリンク
      12.4 クラスおよびインタフェースの初期化
      導入されたバージョン:
      1.2
      関連項目:
    • forName

      public static Class<?> forName(Module module, String name)
      与えられたモジュール内の与えられた「バイナリ名」を持つ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

      非推奨。
      このメソッドは、チェック例外を含むnullaryコンストラクタによってスローされた例外をすべて伝播します。 このメソッドを使用することで、その他の場合にはコンパイラによって実行されるコンパイル時の例外確認を効果的にバイパスできます。 Constructor.newInstanceメソッドはこの問題を回避するため、コンストラクタからスローされる任意の例外を、(チェックされる) InvocationTargetException内にラップします。

      呼び出し

      
       clazz.newInstance()
       
      は、次のもので置き換えることができます
      
       clazz.getDeclaredConstructor().newInstance()
       
      後者の呼び出しシーケンスは、追加の例外型InvocationTargetExceptionNoSuchMethodExceptionをスローすることができると推測されます。 これらの例外タイプはどちらも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仮想マシンが作成し、該当するプリミティブ型と同じ名前を持ちます。つまり、booleanbytecharshortintlongfloat、およびdoubleです。

      これらのオブジェクトには、public static final変数を使う方法によってのみアクセスできます。また、このメソッドがtrueを返すのは、これらの9つのClassオブジェクトに限定されます。

      定義:
      インタフェースTypeDescriptor.OfField<T>内のisPrimitive
      戻り値:
      このクラスがプリミティブ型を表す場合に限りtrue
      導入されたバージョン:
      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>では、NLookup::defineHiddenClassに渡されるclassファイルによって示されるバイナリ名で、<suffix>は修飾されていない名前です。

      このClassオブジェクトが配列クラスを表す場合、結果は、配列のネストの深さを表す1つ以上の'['文字と、次の表を使用してエンコードされた要素タイプで構成される文字列になります:

      要素の型とエンコーディング
      要素タイプ Encoding
      boolean Z
      byte B
      char C
      「バイナリ名」 Nとのクラスまたはインタフェース LN;
      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")がない場合
      関連項目:
    • getModule

      public Module getModule()
      このクラスまたはインタフェースがメンバーであるモジュールを返します。 このクラスが配列型を表す場合、このメソッドは要素型のModuleを返します。 このクラスがプリミティブ型またはvoidを表す場合は、java.baseモジュールのModuleオブジェクトが返されます。 このクラスが名前のないモジュールにある場合、このクラスのクラス・ローダーのunnamed Moduleが返されます。
      戻り値:
      このクラスまたはインタフェースがメンバーであるモジュール
      導入されたバージョン:
      9
    • getTypeParameters

      public TypeVariable<Class<T>>[] getTypeParameters()
      GenericDeclarationオブジェクトによって表されるジェネリック宣言で宣言された型変数を表すTypeVariableオブジェクトの配列を宣言順に返します。 基になるジェネリック宣言で型変数が宣言されていない場合は、長さ0の配列が返されます。
      定義:
      getTypeParameters、インタフェース: GenericDeclaration
      戻り値:
      このジェネリック宣言で宣言された型変数を表すTypeVariableオブジェクトの配列
      例外:
      GenericSignatureFormatError - このジェネリック宣言のジェネリック・シグネチャが、「Java Virtual Machine仕様」4.7.9セクションで指定された形式に準拠していない場合
      導入されたバージョン:
      1.5
    • getSuperclass

      public Class<? super T> 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
      関連項目:
    • getModifiers

      public int getModifiers()
      このクラスまたはインタフェースのJava言語修飾子を整数型に符号化して返します。 修飾子は、publicprotectedprivatefinalstaticabstract、およびinterface用のJava仮想マシンの定数から構成されます。これらは、Modifierクラスのメソッドを使ってデコードしなければいけません。

      基本となるクラスが配列クラスの場合、publicprivate、およびprotectedの各修飾子はコンポーネント型の修飾子と同じです。 このClassオブジェクトがプリミティブ型またはvoidを表す場合、そのpublic修飾子は常にtrueprotectedおよびprivate修飾子は常にfalseです。 このClassオブジェクトが配列クラス、プリミティブ型またはvoidを表す場合、そのfinal修飾子は常にtrueで、そのインタフェース修飾子は常にfalseです。 その他の修飾子の値は、この仕様では判定されません。

      修飾子エンコーディングは、「Java Virtual Machine仕様」4.1セクションで定義されています。

      戻り値:
      このクラスの修飾子を表すint
      Java言語仕様を参照してください:
      「8.1.1 クラス修飾子」
      「9.1.1.インタフェース修飾子」
      導入されたバージョン:
      1.1
      関連項目:
    • 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
      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オブジェクトが、アクセス可能な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オブジェクトによって表されるクラスまたはインタフェースとします:

      1. メソッドの組合は以下のもので構成される:
        1. Cは、getDeclaredMethods()によって返されるpublicインスタンスと静的メソッドを宣言し、パブリック・メソッドのみを含むようにフィルタリングしました。
        2. CがObject以外のクラスである場合、このアルゴリズムをCのスーパークラスに再帰的に呼び出す結果を含めます。
        3. このアルゴリズムをCのすべての直接スーパー・インタフェースに再帰的に呼び出す結果を含めますが、インスタンス・メソッドのみを含みます。
      2. ステップ1のUnionは、同じシグネチャ(名前、パラメータ型)と戻り値の型を持つメソッドのサブセットに分割されます。
      3. そのような各サブセット内では、最も具体的なメソッドのみが選択されます。 メソッドMを、同じシグネチャと戻り値の型を持つメソッドのセットからのメソッドとします。 Mは、NがMよりも特異的であるように、同じ集合からそのようなメソッドN!= Mが存在しない場合に最も具体的です。 NはMよりも具体的です:
        1. Nはクラスによって宣言され、Mはインタフェースによって宣言されます。または
        2. NとMはどちらもクラスによって宣言されており、どちらもインタフェースで宣言されています。N宣言型は、宣言型(MとNの宣言型が同じ型の場合、MとNは同じメソッドです)と同じか、またはサブ型です。
      4. このアルゴリズムの結果は、ステップ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オブジェクトによって表されるクラスまたはインタフェースとします:

      1. Cが指定された名前を持つpublicフィールドを宣言すると、それがリフレクトされるフィールドになります。
      2. 上記のステップ1でフィールドが見つからなかった場合は、このアルゴリズムをCのそれぞれの直接スーパー・インタフェースに再帰的に適用します。 直接スーパー・インタフェースは宣言された順序で検索されます。
      3. 上記のステップ1と2でフィールドが見つからない場合、およびCがスーパー・クラスSを持つ場合は、このアルゴリズムはSで再帰的に呼び出されます。 Cがスーパー・クラスを持たない場合は、NoSuchFieldExceptionがスローされます。

      このClassオブジェクトが配列型を表す場合、このメソッドはその配列型のlengthフィールドを見つけられません。

      パラメータ:
      name - フィールド名
      戻り値:
      nameで指定されたこのクラスのFieldオブジェクト
      例外:
      NoSuchFieldException - 指定された名前のフィールドが見つからない場合。
      NullPointerException - namenullである場合
      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オブジェクトの配列です。 parameterTypesnullの場合は、空の配列のように扱われます。

      このClassオブジェクトが配列型を表す場合、このメソッドはObjectからclone()以外の配列型によって継承されたパブリック・メソッドを検出します。

      このClassオブジェクトがインタフェースを表す場合、このメソッドはObjectから暗黙的に宣言されたメソッドを検出しません。 したがって、このインタフェースまたはそのスーパー・インタフェースのいずれかで明示的に宣言されているメソッドがない場合、このメソッドはメソッドを検出しません。

      このメソッドは、名前が"<init>"または"<clinit>"のメソッドを検出しません。

      一般に、反映されるメソッドは、以下の4ステップ・アルゴリズムによって決定されます。 CをこのClassオブジェクトによって表されるクラスまたはインタフェースとします:

      1. メソッドの組合は以下のもので構成される:
        1. CはgetDeclaredMethods()によって返されたpublicインスタンスと静的メソッドを宣言し、与えられたnameparameterTypesに一致するパブリック・メソッドのみを含むようにフィルタリングしました
        2. CがObject以外のクラスである場合、このアルゴリズムをCのスーパークラスに再帰的に呼び出す結果を含めます。
        3. このアルゴリズムをCのすべての直接スーパー・インタフェースに再帰的に呼び出す結果を含めますが、インスタンス・メソッドのみを含みます。
      2. この共用体は、同じ戻り型(ステップ1からのメソッドの選択でも、メソッド名とパラメータ型が同じであることが保証されます)を持つメソッドのサブセットに分割されます。
      3. そのような各サブセット内では、最も具体的なメソッドのみが選択されます。 メソッドMを、同じVMシグネチャ(戻り値の型、名前、パラメータ型)を持つ一連のメソッドのメソッドとします。 Mは、NがMよりも特異的であるように、同じ集合からそのようなメソッドN!= Mが存在しない場合に最も具体的です。 NはMよりも具体的です:
        1. Nはクラスによって宣言され、Mはインタフェースによって宣言されます。または
        2. NとMはどちらもクラスによって宣言されており、どちらもインタフェースで宣言されています。N宣言型は、宣言型(MとNの宣言型が同じ型の場合、MとNは同じメソッドです)と同じか、またはサブ型です。
      4. このアルゴリズムの結果は、ステップ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 - パラメータのリスト
      戻り値:
      指定されたnameparameterTypesに一致するMethodオブジェクト
      例外:
      NoSuchMethodException - 一致するメソッドが見つからない場合、または名前が「<init>」または「<clinit>」の場合。
      NullPointerException - namenullである場合
      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()の呼出しがこのクラスのパッケージへのアクセスを許可しない
      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コンストラクタです。 返された配列内の要素は、ソートされていたり、特定の順序になっていたりすることはありません。 クラスがデフォルトのコンストラクタを持つ場合、このコンストラクタは返された配列にあります。 このメソッドは、このClassオブジェクトがインタフェース、プリミティブ型、配列クラス、またはvoidを表す場合には長さが0の配列を返します。

      「Java言語仕様」の項8.2を参照してください。

      戻り値:
      このクラスの宣言されたすべてのコンストラクタを表す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 - namenullである場合
      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 - namenullである場合
      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 - namenullである場合
      導入されたバージョン:
      1.1
      関連項目:
    • getResource

      public URL getResource(String name)
      指定された名前のリソースを探します。

      このクラスが名前付き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 - namenullである場合
      導入されたバージョン:
      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

      public T cast(Object obj)
      このClassオブジェクトが表すクラスまたはインタフェースにオブジェクトをキャストします。
      パラメータ:
      obj - キャストされるオブジェクト
      戻り値:
      キャスト後のオブジェクト。オブジェクトがnullの場合はnull
      例外:
      ClassCastException - オブジェクトがnull以外であり、型Tに割り当てられない場合。
      導入されたバージョン:
      1.5
    • asSubclass

      public <U> Class<? extends U> asSubclass(Class<U> clazz)
      指定されたクラス・オブジェクトによって表されるクラスのサブクラスを表すためにこの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オブジェクトです。

      このClassObjectクラス、インタフェース・タイプ、配列型、プリミティブ型、または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.29 NestMembers属性
      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.29 NestMembers属性
      導入されたバージョン:
      11
      関連項目:
    • descriptorString

      public String descriptorString()
      このClassオブジェクトによって表されるエンティティ(クラス、インタフェース、配列クラス、プリミティブ型またはvoid)の記述子文字列を返します。

      このClassオブジェクトが配列クラスではなくクラスまたはインタフェースを表す場合:

      • クラスまたはインタフェースがhiddenでない場合、結果はクラスまたはインタフェースのフィールド記述子(JVMS 4.3.2)になります。 結果記述子文字列を使用してClassDesc::ofDescriptorをコールすると、このクラスまたはインタフェースを記述するClassDescが生成されます。
      • クラスまたはインタフェースがhiddenの場合、結果は次の形式の文字列になります:
        "L" + N + "." + <suffix> + ";"
        ここで、NLookup::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
    • 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

      public Optional<ClassDesc> describeConstable()
      このインスタンスの名目記述子を返します(作成可能な場合)、作成できない場合は空のOptionalを返します。
      定義:
      インタフェースConstable内のdescribeConstable
      戻り値:
      最終的な名目記述子を含むOptional、または作成できない場合は空のOptional
      導入されたバージョン:
      12
    • 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