クラス ClassUtils

java.lang.ObjectSE
org.springframework.util.ClassUtils

public abstract class ClassUtils extends ObjectSE
その他の java.lang.Class ユーティリティメソッド。

主にフレームワーク内での内部使用向け。

導入:
1.1
作成者:
Juergen Hoeller, Keith Donald, Rob Harrop, Sam Brannen, Sebastien Deleuze, Sungbin Yang
関連事項:
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    static final StringSE
    配列クラス名のサフィックス: "[]"
    static final StringSE
    CGLIB クラスセパレーター: "$$".
    static final StringSE
    ".class" ファイルのサフィックス。
  • コンストラクターの概要

    コンストラクター
    コンストラクター
    説明
  • 方法の概要

    修飾子と型
    メソッド
    説明
    static StringSE
    ClassLoader.getResource での使用に適したパスを返します(戻り値の前にスラッシュ('/')を追加することにより、Class.getResource での使用にも適しています)。
    static StringSE
    指定された配列内のクラス / インターフェースの名前で構成される文字列を作成します。
    static StringSE
    指定されたコレクション内のクラス / インターフェースの名前で構成される文字列を作成します。
    static StringSE
    入力クラスオブジェクトを指定すると、クラスのパッケージ名をパス名として含む文字列を返します。つまり、すべてのドット('.' )をスラッシュ('/')に置き換えます。
    static StringSE
    "." -based 完全修飾クラス名を「/"-based リソースパス」に変換します。
    static StringSE
    「/"-based リソースパスを "." -based 完全修飾クラス名に変換します。
    static ClassSE<?>
    指定されたインターフェースの複合インターフェースクラスを作成し、指定されたインターフェースを 1 つの単一クラスに実装します。
    static @Nullable ClassSE<?>
    指定されたクラスの共通の祖先がある場合、それを決定します。
    static ClassSE<?>
    プリミティブ (たとえば、"int" ) と配列クラス名 (たとえば、"String[]" ) の Class インスタンスも返す Class.forName() の代替です。
    static ClassSE<?>[]
    スーパークラスによって実装されたものも含め、指定されたインスタンスが配列として実装するすべてのインターフェースを返します。
    static SetSE<ClassSE<?>>
    指定されたインスタンスが Set として実装するすべてのインターフェースを返します。これにはスーパークラスによって実装されたものも含まれます。
    static ClassSE<?>[]
    指定されたクラスが配列として実装するすべてのインターフェースを返します(スーパークラスによって実装されたインターフェースを含む)。
    static ClassSE<?>[]
    指定されたクラスが配列として実装するすべてのインターフェースを返します(スーパークラスによって実装されたインターフェースを含む)。
    static SetSE<ClassSE<?>>
    スーパークラスによって実装されたものを含め、指定されたクラスが Set として実装するすべてのインターフェースを返します。
    static SetSE<ClassSE<?>>
    スーパークラスによって実装されたものを含め、指定されたクラスが Set として実装するすべてのインターフェースを返します。
    static StringSE
    クラスファイルの名前を、それを含むパッケージを基準にして決定します (例: "String.class" )。
    static <T> @Nullable ConstructorSE<T>
    getConstructorIfAvailable(ClassSE<T> clazz, ClassSE<?>... paramTypes)
    指定されたクラスに指定された署名を持つ public コンストラクターがあるかどうかを判断し、使用可能な場合はそれを返します(そうでない場合は null を返します)。
    使用するデフォルト ClassLoader を返します。通常、スレッドコンテキスト ClassLoader(使用可能な場合)。ClassUtils クラスをロードした ClassLoader がフォールバックとして使用されます。
    指定されたオブジェクトの型を説明する名前を返します。通常は単にクラス名ですが、コンポーネント型のクラス名 + 配列の "[]"、および JDK プロキシの実装済みインターフェースの追加リスト。
    static MethodSE
    使用すべきではありません。
    static MethodSE
    可能であれば、指定されたメソッドハンドルに対応するインターフェースメソッドを決定します。
    static MethodSE
    getMethod(ClassSE<?> clazz, StringSE methodName, @Nullable ClassSE<?>... paramTypes)
    指定されたクラスに指定された署名を持つ public メソッドがあるかどうかを判断し、使用可能な場合はそれを返します(そうでない場合は IllegalStateException をスローします)。
    static int
    getMethodCountForName(ClassSE<?> clazz, StringSE methodName)
    指定されたクラスおよび / またはそのスーパークラスについて、指定された名前(引数の型)を持つメソッドの数を返します。
    getMethodIfAvailable(ClassSE<?> clazz, StringSE methodName, @Nullable ClassSE<?> @Nullable... paramTypes)
    指定されたクラスに指定された署名を持つ public メソッドがあるかどうかを判断し、利用可能な場合はそれを返します(そうでない場合は null を返します)。
    static MethodSE
    インターフェースから来る可能性のあるメソッドと、現在のリフレクト呼び出しで使用されるターゲットクラスを指定して、対応するターゲットメソッドがあればそれを見つけます。たとえば、メソッドが IFoo.bar() で、ターゲットクラスが DefaultFoo である場合があります。
    static StringSE
    指定されたクラスのパッケージ名を決定します。たとえば、java.lang.String クラスの場合は "java.lang" です。
    static StringSE
    指定された完全修飾クラス名のパッケージ名を決定します。たとえば、java.lang.String クラス名の場合は "java.lang" です。
    static MethodSE
    可能であれば、指定されたメソッドと同等のメソッドシグネチャーを持つ、指定されたメソッドの型階層内で最も近いパブリックにアクセス可能なメソッドを取得します。
    static StringSE
    完全修飾インターフェース / クラス名 + "." で構成される、指定されたメソッドの修飾名を返します。+ メソッド名。
    static StringSE
    完全修飾インターフェース / クラス名 + "." で構成される、指定されたメソッドの修飾名を返します。+ メソッド名。
    static StringSE
    指定されたクラスの修飾名を返します。通常は単にクラス名ですが、配列の場合はコンポーネント型クラス名 + "[]"。
    static StringSE
    修飾パッケージ名なしでクラス名を取得します。
    static StringSE
    修飾パッケージ名なしでクラス名を取得します。
    static StringSE
    Java クラスの短い文字列名を大文字ではない JavaBeans プロパティ形式で返します。
    getStaticMethod(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... args)
    クラスのパブリック静的メソッドを返します。
    static ClassSE<?>
    指定されたクラスのユーザー定義クラスを返します。通常は単に指定されたクラスですが、CGLIB で生成されたサブクラスの場合は元のクラスです。
    static ClassSE<?>
    指定されたインスタンスのユーザー定義クラスを返します。通常は、単に指定されたインスタンスのクラスですが、CGLIB で生成されたサブクラスの場合は元のクラスです。
    static boolean
    指定されたクラスまたはそのスーパークラスの 1 つに、指定された名前(引数の型)を持つメソッドが少なくとも 1 つありますか? 非 public メソッドが含まれます。
    static boolean
    hasConstructor(ClassSE<?> clazz, ClassSE<?>... paramTypes)
    指定されたクラスに、指定された署名を持つ public コンストラクターがあるかどうかを判断します。
    static boolean
    hasMethod(ClassSE<?> clazz, MethodSE method)
    指定されたクラスに、指定された署名を持つ public メソッドがあるかどうかを判断します。
    static boolean
    hasMethod(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... paramTypes)
    指定されたクラスに、指定された署名を持つ public メソッドがあるかどうかを判断します。
    static boolean
    isAssignable(ClassSE<?> lhsType, ClassSE<?> rhsType)
    リフレクションによる設定を想定して、右側の型を左側の型に割り当てることができるかどうかを確認します。
    static boolean
    リフレクションによる設定を想定して、指定された型が指定された値から割り当て可能かどうかを判断します。
    static boolean
    指定されたクラスが指定されたコンテキストでキャッシュセーフかどうかを確認します。
    static boolean
    使用すべきではありません。
    Spring AOP プロキシのようなカスタム(おそらくより狭い)チェックを優先する
    static boolean
    使用すべきではありません。
    カスタム(おそらくより狭い)チェック、または単に CGLIB_CLASS_SEPARATOR を含むかどうかのチェックを優先する
    static boolean
    使用すべきではありません。
    カスタム(おそらくより狭い)チェック、または単に CGLIB_CLASS_SEPARATOR を含むかどうかのチェックを優先する
    static boolean
    指定されたクラスが内部クラスであるかどうかを決定します。
    static boolean
    指定されたインターフェースが共通の Java 言語インターフェースであるかどうかを判別します: SerializableSEExternalizableSECloseableSEAutoCloseableSECloneableSEComparableSE-「プライマリ」ユーザーレベルインターフェースを探す場合、これらはすべて無視できます。
    static boolean
    提供された ClassSE が、ラムダ式またはメソッド参照用に JVM で生成された実装クラスであるかどうかを判別します。
    static boolean
    isPresent(StringSE className, @Nullable ClassLoaderSE classLoader)
    指定された名前で識別される ClassSE が存在し、ロードできるかどうかを判別します。
    static boolean
    指定されたクラスがプリミティブの配列を表すかどうかを確認します。
    static boolean
    指定されたクラスがプリミティブを表すかどうかを確認します(つまり
    static boolean
    指定されたクラスがプリミティブラッパーを表すかどうかを確認します。
    static boolean
    指定されたクラスがプリミティブラッパーの配列を表すかどうかを確認します。
    static boolean
    static boolean
    提供されたクラスが静的クラスかどうかを判別します。
    static boolean
    指定されたメソッドがユーザーによって宣言されているか、少なくともユーザーが宣言したメソッドを指しているかを判断します。
    static boolean
    isVisible(ClassSE<?> clazz, @Nullable ClassLoaderSE classLoader)
    指定されたクラスが指定された ClassLoader に表示されるかどうかを確認します。
    static boolean
    指定された型が Void または void のいずれかを表すかを判断します。
    static boolean
    指定されたクラスがユーザー指定の型名と一致するかどうかを確認します。
    必要に応じて、スレッドコンテキスト ClassLoader を環境の Bean ClassLoader でオーバーライドします。
    static ClassSE<?>
    指定されたクラス名を Class インスタンスに解決します。
    static @Nullable ClassSE<?>
    必要に応じて、プリミティブクラスに関する JVM の命名規則に従って、指定されたクラス名をプリミティブクラスとして解決します。
    static ClassSE<?>
    指定されたクラスがプリミティブクラスの場合は解決し、対応するプリミティブラッパー型を代わりに返します。
    static ClassSE<?>[]
    指定された Collection を Class 配列にコピーします。

    クラス ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • フィールドの詳細

  • コンストラクターの詳細

    • ClassUtils

      public ClassUtils()
  • メソッドの詳細

    • getDefaultClassLoader

      public static @Nullable ClassLoaderSE getDefaultClassLoader()
      使用するデフォルト ClassLoader を返します。通常、スレッドコンテキスト ClassLoader(使用可能な場合)。ClassUtils クラスをロードした ClassLoader がフォールバックとして使用されます。

      null 以外の ClassLoader 参照を明確に好むシナリオでスレッドコンテキスト ClassLoader を使用する場合は、このメソッドを呼び出します。たとえば、クラスパスリソースのロード(必ずしも null ClassLoader 参照を受け入れる Class.forName の場合は必要ありません)。

      戻り値:
      デフォルトの ClassLoader (システム ClassLoader にもアクセスできない場合にのみ null )
      関連事項:
    • overrideThreadContextClassLoader

      @Contract("null -> null") public static @Nullable ClassLoaderSE overrideThreadContextClassLoader(@Nullable ClassLoaderSE classLoaderToUse)
      必要に応じて、つまり Bean ClassLoader がすでにスレッドコンテキスト ClassLoader と同等でない場合は、スレッドコンテキスト ClassLoader を環境の Bean ClassLoader でオーバーライドします。
      パラメーター:
      classLoaderToUse - スレッドコンテキストに使用する実際の ClassLoader
      戻り値:
      元のスレッドコンテキスト ClassLoader、またはオーバーライドされない場合は null 
    • forName

      public static ClassSE<?> forName(StringSE name, @Nullable ClassLoaderSE classLoader) throws ClassNotFoundExceptionSE, LinkageErrorSE
      Class.forName() の代替であり、プリミティブ (たとえば、"int" ) および配列クラス名 (たとえば、"String[]" ) の Class インスタンスも返します。さらに、Java ソーススタイルでネストされたクラス名を解決することもできます (たとえば、"java.lang.Thread$State" ではなく "java.lang.Thread.State" )。
      パラメーター:
      name - クラスの名前
      classLoader - 使用するクラスローダー (null はデフォルトのクラスローダーを示します)
      戻り値:
      指定された名前のクラスインスタンス
      例外:
      ClassNotFoundExceptionSE - クラスが見つからなかった場合
      LinkageErrorSE - クラスファイルをロードできなかった場合
      関連事項:
    • resolveClassName

      public static ClassSE<?> resolveClassName(StringSE className, @Nullable ClassLoaderSE classLoader) throws IllegalArgumentExceptionSE
      指定されたクラス名を Class インスタンスに解決します。プリミティブ("int" など)および配列クラス名("String[]" など)をサポートします。

      これは、同じ引数を持つ forName メソッドと事実上同等ですが、唯一の違いは、クラスのロードに失敗した場合にスローされる例外です。

      パラメーター:
      className - クラスの名前
      classLoader - 使用するクラスローダー (null はデフォルトのクラスローダーを示します)
      戻り値:
      指定された名前のクラスインスタンス
      例外:
      IllegalArgumentExceptionSE - クラス名が解決できなかった場合 (つまり、クラスが見つからなかったか、クラスファイルをロードできませんでした)
      IllegalStateExceptionSE - 対応するクラスは解決可能であるが、クラスの継承階層に可読性の不一致があった場合 (通常、ここにロードされるクラスによって実装されるスーパークラスまたはインターフェースの Java モジュールシステムモジュール定義における依存関係宣言の欠落)
      関連事項:
    • isPresent

      public static boolean isPresent(StringSE className, @Nullable ClassLoaderSE classLoader)
      指定された名前で識別される ClassSE が存在し、ロード可能かどうかを判断します。クラスまたはその依存関係のいずれかが存在しないか、ロードできない場合は、false を返します。
      パラメーター:
      className - チェックするクラスの名前
      classLoader - 使用するクラスローダー (デフォルトのクラスローダーを示す null にすることができます)
      戻り値:
      指定されたクラスが存在するかどうか (すべてのスーパークラスとインターフェースを含む)
      例外:
      IllegalStateExceptionSE - 対応するクラスは解決可能であるが、クラスの継承階層に可読性の不一致があった場合 (通常、ここでチェックするクラスが実装するスーパークラスまたはインターフェースの Java モジュールシステムモジュール定義における依存関係宣言の欠落が原因)
    • isVisible

      @Contract("_, null -> true") public static boolean isVisible(ClassSE<?> clazz, @Nullable ClassLoaderSE classLoader)
      指定されたクラスが指定された ClassLoader に表示されるかどうかを確認します。
      パラメーター:
      clazz - チェックするクラス (通常はインターフェース)
      classLoader - チェックする ClassLoader (null の場合、このメソッドは常に true を返します。)
    • isCacheSafe

      public static boolean isCacheSafe(ClassSE<?> clazz, @Nullable ClassLoaderSE classLoader)
      指定されたクラスが指定されたコンテキストでキャッシュセーフであるかどうか、つまり、指定された ClassLoader またはその親によって読み込まれたかどうかを確認します。
      パラメーター:
      clazz - 分析するクラス
      classLoader - メタデータを潜在的にキャッシュする ClassLoader (システムクラスローダーを示す null にすることができます)
    • resolvePrimitiveClassName

      @Contract("null -> null") public static @Nullable ClassSE<?> resolvePrimitiveClassName(@Nullable StringSE name)
      必要に応じて、プリミティブクラスに関する JVM の命名規則に従って、指定されたクラス名をプリミティブクラスとして解決します。

      プリミティブ配列の JVM の内部クラス名もサポートします。プリミティブ配列の "[]" サフィックス表記サポートされていません。これは forName(String, ClassLoader) でのみサポートされています。

      パラメーター:
      name - 潜在的にプリミティブなクラスの名前
      戻り値:
      プリミティブクラス、または名前がプリミティブクラスまたはプリミティブ配列クラスを示さない場合は null 
    • isPrimitiveWrapper

      public static boolean isPrimitiveWrapper(ClassSE<?> clazz)
      指定されたクラスがプリミティブラッパーを表すかどうかを確認します。つまり、ブール、バイト、文字、ショート、整数、ロング、フロート、ダブル、Void です。
      パラメーター:
      clazz - チェックするクラス
      戻り値:
      指定されたクラスがプリミティブラッパークラスかどうか
    • isPrimitiveOrWrapper

      public static boolean isPrimitiveOrWrapper(ClassSE<?> clazz)
      指定されたクラスがプリミティブ (boolean、byte、char、short、int、long、float、double)、void、またはそれらの型のラッパー (Boolean、Byte、Character、Short、Integer、Long、Float、Double、Void) を表しているかどうかを確認します。
      パラメーター:
      clazz - チェックするクラス
      戻り値:
      true : 指定されたクラスがプリミティブ、ボイド、ラッパークラスを表す場合
    • isPrimitiveArray

      public static boolean isPrimitiveArray(ClassSE<?> clazz)
      指定されたクラスがプリミティブの配列を表すかどうかを確認します。つまり、ブール、バイト、char、short、int、long、float、double です。
      パラメーター:
      clazz - チェックするクラス
      戻り値:
      指定されたクラスがプリミティブ配列クラスかどうか
    • isPrimitiveWrapperArray

      public static boolean isPrimitiveWrapperArray(ClassSE<?> clazz)
      指定されたクラスがプリミティブラッパーの配列、つまり、ブール、バイト、文字、短、整数、長、浮動、または倍を表すかどうかを確認します。
      パラメーター:
      clazz - チェックするクラス
      戻り値:
      指定されたクラスがプリミティブラッパー配列クラスかどうか
    • resolvePrimitiveIfNecessary

      public static ClassSE<?> resolvePrimitiveIfNecessary(ClassSE<?> clazz)
      指定されたクラスがプリミティブクラスの場合は解決し、対応するプリミティブラッパー型を代わりに返します。
      パラメーター:
      clazz - チェックするクラス
      戻り値:
      元のクラス、または元のプリミティブ型のプリミティブラッパー
    • isVoidType

      @Contract("null -> false") public static boolean isVoidType(@Nullable ClassSE<?> type)
      指定された型が Void または void のいずれかを表すかを判断します。
      パラメーター:
      type - チェックする型
      戻り値:
      true (型が Void または void を表す場合)
      導入:
      6.1.4
      関連事項:
    • isSimpleValueType

      public static boolean isSimpleValueType(ClassSE<?> type)
      BeanUtils.isSimpleValueType(Class) の代理人。ObjectUtils.nullSafeConciseToString(Object) によっても使用されます。

      指定された型が一般的な「単純な」値型(プリミティブまたはプリミティブラッパー、EnumSEStringSE、その他の CharSequenceSENumberSEDateSETemporalSEZoneIdSETimeZoneSEFileSEPathSEURISEURLSEInetAddressSECharsetSECurrencySELocaleSEUUIDSEPatternSEClassSE)を表しているかどうかを確認します。

      Void および void は単純な値型とは見なされません。

      パラメーター:
      type - チェックする型
      戻り値:
      指定された型が「単純な」値型を表すかどうか、値ベースのデータバインディングと toString 出力を提案します。
      導入:
      6.1
    • isAssignable

      public static boolean isAssignable(ClassSE<?> lhsType, ClassSE<?> rhsType)
      リフレクションによる設定を想定して、右側の型を左側の型に割り当てることができるかどうかを確認します。プリミティブラッパークラスを、対応するプリミティブ型に割り当て可能と見なします。
      パラメーター:
      lhsType - ターゲット型(左側(LHS)型)
      rhsType - ターゲット型に割り当てる必要がある値の型 (右側 (RHS) 型)
      戻り値:
      true (rhsType が lhsType に割り当て可能な場合)
      関連事項:
    • isAssignableValue

      public static boolean isAssignableValue(ClassSE<?> type, @Nullable ObjectSE value)
      リフレクションによる設定を想定して、指定された型が指定された値から割り当て可能かどうかを判断します。プリミティブラッパークラスを、対応するプリミティブ型に割り当て可能と見なします。
      パラメーター:
      type - ターゲット型
      value - 型に割り当てられる値
      戻り値:
      型が値から割り当て可能な場合
    • convertResourcePathToClassName

      public static StringSE convertResourcePathToClassName(StringSE resourcePath)
      「/"-based リソースパスを "." -based 完全修飾クラス名に変換します。
      パラメーター:
      resourcePath - クラスを指すリソースパス
      戻り値:
      対応する完全修飾クラス名
    • convertClassNameToResourcePath

      public static StringSE convertClassNameToResourcePath(StringSE className)
      "." -based 完全修飾クラス名を「/"-based リソースパス」に変換します。
      パラメーター:
      className - 完全修飾クラス名
      戻り値:
      クラスを指す対応するリソースパス
    • addResourcePathToPackagePath

      public static StringSE addResourcePathToPackagePath(ClassSE<?> clazz, StringSE resourceName)
      ClassLoader.getResource での使用に適したパスを返します (戻り値の前にスラッシュ ('/') を追加することにより、Class.getResource での使用にも適しています)。指定されたクラスファイルのパッケージを取得し、すべてのドット ('.') をスラッシュに変換してビルドされます ('/'), 必要に応じて末尾にスラッシュを追加し、指定されたリソース名をこれに連結します。
      そのため、この関数を使用して、クラスファイルと同じパッケージにあるリソースファイルをロードするのに適したパスを構築できますが、通常は ClassPathResource の方が便利です。
      パラメーター:
      clazz - パッケージがベースとして使用されるクラス
      resourceName - 追加するリソース名。先頭のスラッシュはオプションです。
      戻り値:
      構築されたリソースパス
      関連事項:
    • classPackageAsResourcePath

      public static StringSE classPackageAsResourcePath(@Nullable ClassSE<?> clazz)
      入力クラスオブジェクトを指定すると、クラスのパッケージ名で構成される文字列をパス名として返します。つまり、すべてのドット('.' )はスラッシュ('/')に置き換えられます。先頭と末尾のスラッシュは追加されません。結果は、スラッシュとリソースの名前で連結され、ClassLoader.getResource() に直接供給されます。代わりに Class.getResource に送るには、戻り値の前にスラッシュを付ける必要があります。
      パラメーター:
      clazz - 入力クラス。null 値またはデフォルト(空)のパッケージでは、空の文字列("")が返されます。
      戻り値:
      パッケージ名を表すパス
      関連事項:
    • classNamesToString

      public static StringSE classNamesToString(ClassSE<?>... classes)
      指定された配列内のクラス / インターフェースの名前で構成される文字列を作成します。

      基本的に AbstractCollection.toString() に似ていますが、すべてのクラス名の前にある「クラス "/"interface " プレフィックス」を削除します。

      パラメーター:
      classes - Class オブジェクトの配列
      戻り値:
      「[com.foo.Bar、com.foo.Baz]」という形式の文字列
      関連事項:
    • classNamesToString

      public static StringSE classNamesToString(@Nullable CollectionSE<ClassSE<?>> classes)
      指定されたコレクション内のクラス / インターフェースの名前で構成される文字列を作成します。

      基本的に AbstractCollection.toString() に似ていますが、すべてのクラス名の前にある「クラス "/"interface " プレフィックス」を削除します。

      パラメーター:
      classes - Class オブジェクトのコレクション (null にすることができます)
      戻り値:
      「[com.foo.Bar、com.foo.Baz]」という形式の文字列
      関連事項:
    • toClassArray

      public static ClassSE<?>[] toClassArray(@Nullable CollectionSE<ClassSE<?>> collection)
      指定された Collection を Class 配列にコピーします。

      Collection には Class 要素のみが含まれている必要があります。

      パラメーター:
      collection - コピーする Collection 
      戻り値:
      Class 配列
      導入:
      3.1
      関連事項:
    • getAllInterfaces

      public static ClassSE<?>[] getAllInterfaces(ObjectSE instance)
      スーパークラスによって実装されたものも含め、指定されたインスタンスが配列として実装するすべてのインターフェースを返します。
      パラメーター:
      instance - インターフェースを分析するインスタンス
      戻り値:
      指定されたインスタンスが配列として実装するすべてのインターフェース
    • getAllInterfacesForClass

      public static ClassSE<?>[] getAllInterfacesForClass(ClassSE<?> clazz)
      指定されたクラスが配列として実装するすべてのインターフェースを返します(スーパークラスによって実装されたインターフェースを含む)。

      クラス自体がインターフェースの場合、唯一のインターフェースとして返されます。

      パラメーター:
      clazz - インターフェースを分析するクラス
      戻り値:
      指定されたオブジェクトが配列として実装するすべてのインターフェース
    • getAllInterfacesForClass

      public static ClassSE<?>[] getAllInterfacesForClass(ClassSE<?> clazz, @Nullable ClassLoaderSE classLoader)
      指定されたクラスが配列として実装するすべてのインターフェースを返します(スーパークラスによって実装されたインターフェースを含む)。

      クラス自体がインターフェースの場合、唯一のインターフェースとして返されます。

      パラメーター:
      clazz - インターフェースを分析するクラス
      classLoader - インターフェースを表示する必要がある ClassLoader (宣言されたすべてのインターフェースを受け入れる場合は null にすることができます)
      戻り値:
      指定されたオブジェクトが配列として実装するすべてのインターフェース
    • getAllInterfacesAsSet

      public static SetSE<ClassSE<?>> getAllInterfacesAsSet(ObjectSE instance)
      指定されたインスタンスが Set として実装するすべてのインターフェースを返します。これにはスーパークラスによって実装されたものも含まれます。
      パラメーター:
      instance - インターフェースを分析するインスタンス
      戻り値:
      指定されたインスタンスがセットとして実装するすべてのインターフェース
    • getAllInterfacesForClassAsSet

      public static SetSE<ClassSE<?>> getAllInterfacesForClassAsSet(ClassSE<?> clazz)
      スーパークラスによって実装されたものを含め、指定されたクラスが Set として実装するすべてのインターフェースを返します。

      クラス自体がインターフェースの場合、唯一のインターフェースとして返されます。

      パラメーター:
      clazz - インターフェースを分析するクラス
      戻り値:
      指定されたオブジェクトがセットとして実装するすべてのインターフェース
    • getAllInterfacesForClassAsSet

      public static SetSE<ClassSE<?>> getAllInterfacesForClassAsSet(ClassSE<?> clazz, @Nullable ClassLoaderSE classLoader)
      スーパークラスによって実装されたものを含め、指定されたクラスが Set として実装するすべてのインターフェースを返します。

      クラス自体がインターフェースの場合、唯一のインターフェースとして返されます。

      パラメーター:
      clazz - インターフェースを分析するクラス
      classLoader - インターフェースを表示する必要がある ClassLoader (宣言されたすべてのインターフェースを受け入れる場合は null にすることができます)
      戻り値:
      指定されたオブジェクトがセットとして実装するすべてのインターフェース
    • createCompositeInterface

      public static ClassSE<?> createCompositeInterface(ClassSE<?>[] interfaces, @Nullable ClassLoaderSE classLoader)
      指定されたインターフェースの複合インターフェースクラスを作成し、指定されたインターフェースを 1 つの単一クラスに実装します。

      この実装は、指定されたインターフェースの JDK プロキシクラスを構築します。

      パラメーター:
      interfaces - マージするインターフェース
      classLoader - ClassLoader で複合クラスを作成します
      戻り値:
      クラスとしてマージされたインターフェース
      例外:
      IllegalArgumentExceptionSE - 指定されたインターフェースが競合するメソッドシグネチャーを公開する場合 (または同様の制約に違反している)
      関連事項:
    • determineCommonAncestor

      @Contract("null, _ -> param2; _, null -> param1") public static @Nullable ClassSE<?> determineCommonAncestor(@Nullable ClassSE<?> clazz1, @Nullable ClassSE<?> clazz2)
      指定されたクラスの共通の祖先がある場合、それを決定します。
      パラメーター:
      clazz1 - イントロスペクトするクラス
      clazz2 - イントロスペクトする他のクラス
      戻り値:
      共通の祖先(つまり、共通のスーパークラス、1 つのインターフェースが他を継承したもの)、null が見つからない場合。指定されたクラスのいずれかが null の場合、他のクラスが返されます。
      導入:
      3.2.6
    • isJavaLanguageInterface

      public static boolean isJavaLanguageInterface(ClassSE<?> ifc)
      指定されたインターフェースが一般的な Java 言語インターフェースであるかどうかを判断します。SerializableSE, ExternalizableSE, CloseableSE, AutoCloseableSE, CloneableSE, ComparableSE -「プライマリ」ユーザーレベルのインターフェースを探す場合、これらはすべて無視できます。共通の特徴: サービスレベルの操作、Bean プロパティメソッド、デフォルトメソッドはありません。
      パラメーター:
      ifc - チェックするインターフェース
      導入:
      5.0.3
    • isStaticClass

      public static boolean isStaticClass(ClassSE<?> clazz)
      提供されたクラスが静的クラスかどうかを判別します。
      戻り値:
      指定されたクラスが静的クラスの場合は true 
      導入:
      6.0
      関連事項:
    • isInnerClass

      public static boolean isInnerClass(ClassSE<?> clazz)
      指定されたクラスが内部クラスであるかどうか、つまり、包含クラスの非静的メンバーであるかどうかを判断します。
      戻り値:
      true (提供されたクラスが内部クラスの場合)
      導入:
      5.0.5
      関連事項:
    • isLambdaClass

      public static boolean isLambdaClass(ClassSE<?> clazz)
      提供された ClassSE が、ラムダ式またはメソッド参照用に JVM で生成された実装クラスであるかどうかを判別します。

      この方法は、最新の主流の JVM で機能するチェックに基づいて、これを決定するために最善を尽くします。

      パラメーター:
      clazz - チェックするクラス
      戻り値:
      クラスがラムダ実装クラスの場合は true 
      導入:
      5.3.19
    • isCglibProxy

      @DeprecatedSE(since="5.2") public static boolean isCglibProxy(ObjectSE object)
      使用すべきではありません。
      Spring AOP プロキシのようなカスタム(おそらくより狭い)チェックを優先する
      指定されたオブジェクトが CGLIB プロキシかどうかを確認します。
      パラメーター:
      object - チェックするオブジェクト
      関連事項:
    • isCglibProxyClass

      @DeprecatedSE(since="5.2") @Contract("null -> false") public static boolean isCglibProxyClass(@Nullable ClassSE<?> clazz)
      使用すべきではありません。
      カスタム(おそらくより狭い)チェック、または単に CGLIB_CLASS_SEPARATOR を含むかどうかのチェックを優先する
      指定されたクラスが CGLIB 生成クラスであるかどうかを確認します。
      パラメーター:
      clazz - チェックするクラス
      関連事項:
    • isCglibProxyClassName

      @DeprecatedSE(since="5.2") @Contract("null -> false") public static boolean isCglibProxyClassName(@Nullable StringSE className)
      使用すべきではありません。
      カスタム(おそらくより狭い)チェック、または単に CGLIB_CLASS_SEPARATOR を含むかどうかのチェックを優先する
      指定されたクラス名が CGLIB 生成クラスかどうかを確認します。
      パラメーター:
      className - チェックするクラス名
      関連事項:
    • getUserClass

      public static ClassSE<?> getUserClass(ObjectSE instance)
      指定されたインスタンスのユーザー定義クラスを返します。通常は、単に指定されたインスタンスのクラスですが、CGLIB で生成されたサブクラスの場合は元のクラスです。
      パラメーター:
      instance - チェックするインスタンス
      戻り値:
      ユーザー定義クラス
    • getUserClass

      public static ClassSE<?> getUserClass(ClassSE<?> clazz)
      指定されたクラスのユーザー定義クラスを返します。通常は単に指定されたクラスですが、CGLIB で生成されたサブクラスの場合は元のクラスです。
      パラメーター:
      clazz - チェックするクラス
      戻り値:
      ユーザー定義クラス
      関連事項:
    • getDescriptiveType

      @Contract("null -> null") public static @Nullable StringSE getDescriptiveType(@Nullable ObjectSE value)
      指定されたオブジェクトの型を説明する名前を返します。通常は単にクラス名ですが、コンポーネント型のクラス名 + 配列の "[]"、および JDK プロキシの実装済みインターフェースの追加リスト。
      パラメーター:
      value - イントロスペクトする価値
      戻り値:
      クラスの修飾名
    • matchesTypeName

      @Contract("_, null -> false") public static boolean matchesTypeName(ClassSE<?> clazz, @Nullable StringSE typeName)
      指定されたクラスがユーザー指定の型名と一致するかどうかを確認します。
      パラメーター:
      clazz - チェックするクラス
      typeName - 一致する型名
    • getShortName

      public static StringSE getShortName(StringSE className)
      修飾パッケージ名なしでクラス名を取得します。
      パラメーター:
      className - className の短縮名を取得するには
      戻り値:
      パッケージ名なしのクラスのクラス名
      例外:
      IllegalArgumentExceptionSE - className が空の場合
    • getShortName

      public static StringSE getShortName(ClassSE<?> clazz)
      修飾パッケージ名なしでクラス名を取得します。
      パラメーター:
      clazz - 短い名前を取得するクラス
      戻り値:
      パッケージ名なしのクラスのクラス名
    • getShortNameAsProperty

      public static StringSE getShortNameAsProperty(ClassSE<?> clazz)
      Java クラスの短い文字列名を大文字でない JavaBeans プロパティ形式で返します。ネストされたクラスの場合、外部クラス名を削除します。
      パラメーター:
      clazz - クラス
      戻り値:
      標準の JavaBeans プロパティ形式でレンダリングされた短い名前
      関連事項:
    • getClassFileName

      public static StringSE getClassFileName(ClassSE<?> clazz)
      クラスファイルの名前を、それを含むパッケージを基準にして決定します (例: "String.class" )。
      パラメーター:
      clazz - クラス
      戻り値:
      ".class" ファイルのファイル名
    • getPackageName

      public static StringSE getPackageName(ClassSE<?> clazz)
      指定されたクラスのパッケージ名を決定します。たとえば、java.lang.String クラスの場合は "java.lang" です。
      パラメーター:
      clazz - クラス
      戻り値:
      パッケージ名、またはクラスがデフォルトのパッケージで定義されている場合は空の文字列
    • getPackageName

      public static StringSE getPackageName(StringSE fqClassName)
      指定された完全修飾クラス名のパッケージ名を決定します。たとえば、java.lang.String クラス名の場合は "java.lang" です。
      パラメーター:
      fqClassName - 完全修飾クラス名
      戻り値:
      パッケージ名、またはクラスがデフォルトのパッケージで定義されている場合は空の文字列
    • getQualifiedName

      public static StringSE getQualifiedName(ClassSE<?> clazz)
      指定されたクラスの修飾名を返します。通常は単にクラス名ですが、配列の場合はコンポーネント型クラス名 + "[]"。
      パラメーター:
      clazz - クラス
      戻り値:
      クラスの修飾名
    • getQualifiedMethodName

      public static StringSE getQualifiedMethodName(MethodSE method)
      完全修飾インターフェース / クラス名 + "." で構成される、指定されたメソッドの修飾名を返します。+ メソッド名。
      パラメーター:
      method - メソッド
      戻り値:
      メソッドの修飾名
    • getQualifiedMethodName

      public static StringSE getQualifiedMethodName(MethodSE method, @Nullable ClassSE<?> clazz)
      完全修飾インターフェース / クラス名 + "." で構成される、指定されたメソッドの修飾名を返します。+ メソッド名。
      パラメーター:
      method - メソッド
      clazz - メソッドが呼び出されている場所 (メソッドの宣言クラスを示すために null にすることができます)
      戻り値:
      メソッドの修飾名
      導入:
      4.3.4
    • hasConstructor

      public static boolean hasConstructor(ClassSE<?> clazz, ClassSE<?>... paramTypes)
      指定されたクラスに、指定された署名を持つ public コンストラクターがあるかどうかを判断します。

      基本的に NoSuchMethodException を "false" に変換します。

      パラメーター:
      clazz - 分析するクラブ
      paramTypes - メソッドのパラメーター型
      戻り値:
      クラスに対応するコンストラクターがあるかどうか
      関連事項:
    • getConstructorIfAvailable

      public static <T> @Nullable ConstructorSE<T> getConstructorIfAvailable(ClassSE<T> clazz, ClassSE<?>... paramTypes)
      指定されたクラスに指定された署名を持つ public コンストラクターがあるかどうかを判断し、使用可能な場合はそれを返します(そうでない場合は null を返します)。

      本質的に NoSuchMethodException を null に変換します。

      パラメーター:
      clazz - 分析するクラブ
      paramTypes - メソッドのパラメーター型
      戻り値:
      コンストラクター、または見つからない場合は null 
      関連事項:
    • hasMethod

      public static boolean hasMethod(ClassSE<?> clazz, MethodSE method)
      指定されたクラスに、指定された署名を持つ public メソッドがあるかどうかを判断します。
      パラメーター:
      clazz - 分析するクラブ
      method - 探す方法
      戻り値:
      クラスに対応するメソッドがあるかどうか
      導入:
      5.2.3
    • hasMethod

      public static boolean hasMethod(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... paramTypes)
      指定されたクラスに、指定された署名を持つ public メソッドがあるかどうかを判断します。

      基本的に NoSuchMethodException を "false" に変換します。

      パラメーター:
      clazz - 分析するクラブ
      methodName - メソッドの名前
      paramTypes - メソッドのパラメーター型
      戻り値:
      クラスに対応するメソッドがあるかどうか
      関連事項:
    • getMethod

      public static MethodSE getMethod(ClassSE<?> clazz, StringSE methodName, @Nullable ClassSE<?>... paramTypes)
      指定されたクラスに指定された署名を持つ public メソッドがあるかどうかを判断し、使用可能な場合はそれを返します(そうでない場合は IllegalStateException をスローします)。

      署名が指定されている場合は、一意の候補、つまり指定された名前の単一の public メソッドがある場合にのみメソッドを返します。

      本質的に NoSuchMethodException を IllegalStateException に変換します。

      パラメーター:
      clazz - 分析するクラブ
      methodName - メソッドの名前
      paramTypes - メソッドのパラメーター型 (null は任意の署名を示すことができる)
      戻り値:
      メソッド (非 null)
      例外:
      IllegalStateExceptionSE - メソッドが見つからなかった場合
      関連事項:
    • getMethodIfAvailable

      public static @Nullable MethodSE getMethodIfAvailable(ClassSE<?> clazz, StringSE methodName, @Nullable ClassSE<?> @Nullable ... paramTypes)
      指定されたクラスに指定された署名を持つ public メソッドがあるかどうかを判断し、利用可能な場合はそれを返します(そうでない場合は null を返します)。

      署名が指定されている場合は、一意の候補、つまり指定された名前の単一の public メソッドがある場合にのみメソッドを返します。

      本質的に NoSuchMethodException を null に変換します。

      パラメーター:
      clazz - 分析するクラブ
      methodName - メソッドの名前
      paramTypes - メソッドのパラメーター型 (null は任意の署名を示すことができる)
      戻り値:
      メソッド。見つからない場合は null 
      関連事項:
    • getMethodCountForName

      public static int getMethodCountForName(ClassSE<?> clazz, StringSE methodName)
      指定されたクラスまたはそのスーパークラス、あるいはその両方について、指定された名前(引数型を含む)を持つメソッドの数を返します。非公開メソッドを含みます。
      パラメーター:
      clazz - チェックするクラズ
      methodName - メソッドの名前
      戻り値:
      指定された名前のメソッドの数
    • hasAtLeastOneMethodWithName

      public static boolean hasAtLeastOneMethodWithName(ClassSE<?> clazz, StringSE methodName)
      指定されたクラスまたはそのスーパークラスの 1 つに、指定された名前(引数の型)を持つメソッドが少なくとも 1 つありますか? 非 public メソッドが含まれます。
      パラメーター:
      clazz - チェックするクラズ
      methodName - メソッドの名前
      戻り値:
      指定された名前のメソッドが少なくとも 1 つあるかどうか
    • getMostSpecificMethod

      public static MethodSE getMostSpecificMethod(MethodSE method, @Nullable ClassSE<?> targetClass)
      インターフェースから来る可能性のあるメソッドと、現在のリフレクト呼び出しで使用されるターゲットクラスを指定して、対応するターゲットメソッドがあればそれを見つけます。たとえば、メソッドが IFoo.bar() で、ターゲットクラスが DefaultFoo である場合があります。この場合、メソッドは DefaultFoo.bar() である可能性があります。これにより、そのメソッドの属性を見つけることができます。

      : AopUtils.getMostSpecificMethod(Method, Class) とは対照的に、このメソッドはブリッジメソッドを自動的に解決しませ。ブリッジメソッドの解決が必要な場合 (たとえば、元のメソッド定義からメタデータを取得する場合) は、BridgeMethodResolver.findBridgedMethod(Method) を呼び出します。

      注意 : Java のセキュリティ設定でリフレクションアクセスが許可されていない場合 — たとえば、Class#getDeclaredMethods などの呼び出し。この実装は、最初に提供されたメソッドを返すようにフォールバックします。

      パラメーター:
      method - 呼び出されるメソッド。インターフェースから取得される場合があります
      targetClass - 現在の呼び出しのターゲットクラス (null である場合もあれば、メソッドを実装していない場合もあります)
      戻り値:
      特定のターゲットメソッド、または targetClass がそれを実装していない場合は元のメソッド
      関連事項:
    • getInterfaceMethodIfPossible

      @DeprecatedSE(since="5.2") public static MethodSE getInterfaceMethodIfPossible(MethodSE method)
      使用すべきではありません。
      可能であれば、指定されたメソッドハンドルに対応するインターフェースメソッドを決定します。

      これは、Java モジュールシステムでパブリックにエクスポートされた型に到達する場合に特に便利です。これにより、不正アクセスの警告なしにリフレクションを介してメソッドを呼び出すことができます。

      パラメーター:
      method - 呼び出されるメソッド、場合によっては実装クラスから
      戻り値:
      対応するインターフェースメソッド、または見つからない場合は元のメソッド
      導入:
      5.1
      関連事項:
    • getInterfaceMethodIfPossible

      public static MethodSE getInterfaceMethodIfPossible(MethodSE method, @Nullable ClassSE<?> targetClass)
      可能であれば、指定されたメソッドハンドルに対応するインターフェースメソッドを決定します。

      これは、Java モジュールシステムでパブリックにエクスポートされた型に到達する場合に特に便利です。これにより、不正アクセスの警告なしにリフレクションを介してメソッドを呼び出すことができます。

      パラメーター:
      method - 呼び出されるメソッド、場合によっては実装クラスから
      targetClass - メソッドを呼び出す対象クラス、または不明な場合は null 
      戻り値:
      対応するインターフェースメソッド、または見つからない場合は元のメソッド
      導入:
      5.3.16
      関連事項:
    • getPubliclyAccessibleMethodIfPossible

      public static MethodSE getPubliclyAccessibleMethodIfPossible(MethodSE method, @Nullable ClassSE<?> targetClass)
      可能であれば、指定されたメソッドと同等のメソッドシグネチャーを持つ、指定されたメソッドの型階層内で最も近いパブリックにアクセス可能なメソッドを取得します。

      このメソッドは、クラス階層と実装されたインターフェースを再帰的に検索し、public であり、public 型で宣言され、spring-coreエクスポートされているSE同等のメソッドを探します。

      指定されたメソッドが public でない場合、または static である場合、あるいは公開されている同等のメソッドが見つからない場合は、指定されたメソッドが返され、同等のメソッドが存在しないことを示します。公開アクセスが必須である場合は、このメソッドの呼び出し元は返されたメソッドのアクセス可能性を手動で検証する必要があります。

      これは、Java モジュールシステム上の公開エクスポート型に到達する際に特に役立ちます。これにより、不正アクセス警告なしでリフレクションを介してメソッドを呼び出すことができます。これは、バイトコード内の公開 API を介してメソッドを呼び出す場合にも役立ちます。たとえば、Spring 式言語 (SpEL) コンパイラーで使用する場合などです。例: 非公開クラスが toString() をオーバーライドする場合、このメソッドは型階層をたどって、メソッドを宣言する最初の公開型 (存在する場合) を見つけます。toString() の場合は、ObjectSE までたどる可能性があります。

      パラメーター:
      method - 呼び出されるメソッド、場合によっては実装クラスから
      targetClass - メソッドを呼び出す対象クラス、または不明な場合は null 
      戻り値:
      対応する公開されているメソッド、または見つからない場合は元のメソッド
      導入:
      6.2
      関連事項:
    • isUserLevelMethod

      public static boolean isUserLevelMethod(MethodSE method)
      指定されたメソッドがユーザーによって宣言されているか、少なくともユーザーが宣言したメソッドを指しているかを判断します。

      Method.isSynthetic()(実装メソッドの場合)と GroovyObject インターフェース(インターフェースメソッドの場合。実装クラスでは、GroovyObject メソッドの実装は合成とマークされます)をチェックします。合成であるにもかかわらず、ブリッジメソッド(Method.isBridge())は最終的にユーザー宣言のジェネリクスメソッドを指すため、ユーザーレベルのメソッドと見なされることに注意してください。

      パラメーター:
      method - チェックする方法
      戻り値:
      メソッドがユーザー宣言と見なすことができる場合は true。それ以外の場合は false 
    • getStaticMethod

      public static @Nullable MethodSE getStaticMethod(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... args)
      クラスのパブリック静的メソッドを返します。
      パラメーター:
      clazz - メソッドを定義するクラス
      methodName - 静的メソッド名
      args - メソッドへのパラメーターの型
      戻り値:
      静的メソッド、または静的メソッドが見つからなかった場合は null 
      例外:
      IllegalArgumentExceptionSE - メソッド名が空白または clazz が null の場合