クラス ClassUtils
java.lang.Class ユーティリティメソッド。主にフレームワーク内での内部使用向け。
- 導入:
- 1.1
- 作成者:
- Juergen Hoeller, Keith Donald, Rob Harrop, Sam Brannen, Sebastien Deleuze, Sungbin Yang
- 関連事項:
フィールドのサマリー
フィールドコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明static StringSEaddResourcePathToPackagePath(ClassSE<?> clazz, StringSE resourceName) ClassLoader.getResourceでの使用に適したパスを返します(戻り値の前にスラッシュ('/')を追加することにより、Class.getResourceでの使用にも適しています)。static StringSEclassNamesToString(ClassSE<?>... classes) 指定された配列内のクラス / インターフェースの名前で構成される文字列を作成します。static StringSEclassNamesToString(@Nullable CollectionSE<ClassSE<?>> classes) 指定されたコレクション内のクラス / インターフェースの名前で構成される文字列を作成します。static StringSEclassPackageAsResourcePath(@Nullable ClassSE<?> clazz) 入力クラスオブジェクトを指定すると、クラスのパッケージ名をパス名として含む文字列を返します。つまり、すべてのドット('.' )をスラッシュ('/')に置き換えます。static StringSEconvertClassNameToResourcePath(StringSE className) "." -based 完全修飾クラス名を「/"-based リソースパス」に変換します。static StringSEconvertResourcePathToClassName(StringSE resourcePath) 「/"-based リソースパスを "." -based 完全修飾クラス名に変換します。static ClassSE<?> createCompositeInterface(ClassSE<?>[] interfaces, @Nullable ClassLoaderSE classLoader) 指定されたインターフェースの複合インターフェースクラスを作成し、指定されたインターフェースを 1 つの単一クラスに実装します。determineCommonAncestor(@Nullable ClassSE<?> clazz1, @Nullable ClassSE<?> clazz2) 指定されたクラスの共通の祖先がある場合、それを決定します。static ClassSE<?> forName(StringSE name, @Nullable ClassLoaderSE classLoader) プリミティブ (たとえば、"int" ) と配列クラス名 (たとえば、"String[]" ) の Class インスタンスも返すClass.forName()の代替です。static ClassSE<?>[]getAllInterfaces(ObjectSE instance) 指定されたインスタンスがスーパークラスによって実装されたものを含む配列として実装するすべてのインターフェースを返します。getAllInterfacesAsSet(ObjectSE instance) 指定されたインスタンスが Set として実装するすべてのインターフェースを返します。これにはスーパークラスによって実装されたものも含まれます。static ClassSE<?>[]getAllInterfacesForClass(ClassSE<?> clazz) 指定されたクラスが配列として実装するすべてのインターフェースを返します(スーパークラスによって実装されたインターフェースを含む)。static ClassSE<?>[]getAllInterfacesForClass(ClassSE<?> clazz, @Nullable ClassLoaderSE classLoader) 指定されたクラスが配列として実装するすべてのインターフェースを返します(スーパークラスによって実装されたインターフェースを含む)。getAllInterfacesForClassAsSet(ClassSE<?> clazz) スーパークラスによって実装されたものを含め、指定されたクラスが Set として実装するすべてのインターフェースを返します。getAllInterfacesForClassAsSet(ClassSE<?> clazz, @Nullable ClassLoaderSE classLoader) スーパークラスによって実装されたものを含め、指定されたクラスが Set として実装するすべてのインターフェースを返します。static StringSEgetClassFileName(ClassSE<?> clazz) クラスファイルの名前を、それを含むパッケージを基準にして決定します (例: "String.class" )。static <T> @Nullable ConstructorSE<T> getConstructorIfAvailable(ClassSE<T> clazz, ClassSE<?>... paramTypes) 指定されたクラスに指定された署名を持つ public コンストラクターがあるかどうかを判断し、使用可能な場合はそれを返します(そうでない場合はnullを返します)。static @Nullable ClassLoaderSE使用するデフォルト ClassLoader を返します。通常、スレッドコンテキスト ClassLoader(使用可能な場合)。ClassUtils クラスをロードした ClassLoader がフォールバックとして使用されます。getDescriptiveType(@Nullable ObjectSE value) 指定されたオブジェクトの型を説明する名前を返します。通常は単にクラス名ですが、コンポーネント型のクラス名 + 配列の "[]"、および JDK プロキシの実装済みインターフェースの追加リスト。static MethodSEgetInterfaceMethodIfPossible(MethodSE method) 使用すべきではありません。static MethodSEgetInterfaceMethodIfPossible(MethodSE method, @Nullable ClassSE<?> targetClass) 可能であれば、指定されたメソッドハンドルに対応するインターフェースメソッドを決定します。static MethodSE指定されたクラスに指定された署名を持つ public メソッドがあるかどうかを判断し、使用可能な場合はそれを返します(そうでない場合はIllegalStateExceptionをスローします)。static intgetMethodCountForName(ClassSE<?> clazz, StringSE methodName) 指定されたクラスおよび / またはそのスーパークラスについて、指定された名前(引数の型)を持つメソッドの数を返します。getMethodIfAvailable(ClassSE<?> clazz, StringSE methodName, @Nullable ClassSE<?> @Nullable... paramTypes) 指定されたクラスに指定された署名を持つ public メソッドがあるかどうかを判断し、利用可能な場合はそれを返します(そうでない場合はnullを返します)。static MethodSEgetMostSpecificMethod(MethodSE method, @Nullable ClassSE<?> targetClass) インターフェースから来る可能性のあるメソッドと、現在のリフレクト呼び出しで使用されるターゲットクラスを指定して、対応するターゲットメソッドがあればそれを見つけます。たとえば、メソッドがIFoo.bar()で、ターゲットクラスがDefaultFooである場合があります。static StringSEgetPackageName(ClassSE<?> clazz) 指定されたクラスのパッケージ名を決定します。たとえば、java.lang.Stringクラスの場合は "java.lang" です。static StringSEgetPackageName(StringSE fqClassName) 指定された完全修飾クラス名のパッケージ名を決定します。たとえば、java.lang.Stringクラス名の場合は "java.lang" です。static MethodSEgetPubliclyAccessibleMethodIfPossible(MethodSE method, @Nullable ClassSE<?> targetClass) 可能であれば、指定されたメソッドと同等のメソッドシグネチャーを持つ、指定されたメソッドの型階層内で最も近いパブリックにアクセス可能なメソッドを取得します。static StringSEgetQualifiedMethodName(MethodSE method) 完全修飾インターフェース / クラス名 + "." で構成される、指定されたメソッドの修飾名を返します。+ メソッド名。static StringSEgetQualifiedMethodName(MethodSE method, @Nullable ClassSE<?> clazz) 完全修飾インターフェース / クラス名 + "." で構成される、指定されたメソッドの修飾名を返します。+ メソッド名。static StringSEgetQualifiedName(ClassSE<?> clazz) 指定されたクラスの修飾名を返します。通常は単にクラス名ですが、配列の場合はコンポーネント型クラス名 + "[]"。static StringSEgetShortName(ClassSE<?> clazz) 修飾パッケージ名なしでクラス名を取得します。static StringSEgetShortName(StringSE className) 修飾パッケージ名なしでクラス名を取得します。static StringSEgetShortNameAsProperty(ClassSE<?> clazz) Java クラスの短い文字列名を大文字ではない JavaBeans プロパティ形式で返します。getStaticMethod(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... args) クラスのパブリック静的メソッドを返します。static ClassSE<?> getUserClass(ClassSE<?> clazz) 指定されたクラスのユーザー定義クラスを返します。通常は単に指定されたクラスですが、CGLIB で生成されたサブクラスの場合は元のクラスです。static ClassSE<?> getUserClass(ObjectSE instance) 指定されたインスタンスのユーザー定義クラスを返します。通常は、単に指定されたインスタンスのクラスですが、CGLIB で生成されたサブクラスの場合は元のクラスです。static booleanhasAtLeastOneMethodWithName(ClassSE<?> clazz, StringSE methodName) 指定されたクラスまたはそのスーパークラスの 1 つに、指定された名前(引数の型)を持つメソッドが少なくとも 1 つありますか? 非 public メソッドが含まれます。static booleanhasConstructor(ClassSE<?> clazz, ClassSE<?>... paramTypes) 指定されたクラスに、指定された署名を持つ public コンストラクターがあるかどうかを判断します。static boolean指定されたクラスに、指定された署名を持つ public メソッドがあるかどうかを判断します。static boolean指定されたクラスに、指定された署名を持つ public メソッドがあるかどうかを判断します。static booleanisAssignable(ClassSE<?> lhsType, ClassSE<?> rhsType) リフレクションによる設定を想定して、右側の型を左側の型に割り当てることができるかどうかを確認します。static booleanisAssignableValue(ClassSE<?> type, @Nullable ObjectSE value) リフレクションによる設定を想定して、指定された型が指定された値から割り当て可能かどうかを判断します。static booleanisCacheSafe(ClassSE<?> clazz, @Nullable ClassLoaderSE classLoader) 指定されたクラスが指定されたコンテキストでキャッシュセーフかどうかを確認します。static booleanisCglibProxy(ObjectSE object) 使用すべきではありません。Spring AOP プロキシのようなカスタム(おそらくより狭い)チェックを優先するstatic booleanisCglibProxyClass(@Nullable ClassSE<?> clazz) 使用すべきではありません。カスタム(おそらくより狭い)チェック、または単にCGLIB_CLASS_SEPARATORを含むかどうかのチェックを優先するstatic booleanisCglibProxyClassName(@Nullable StringSE className) 使用すべきではありません。カスタム(おそらくより狭い)チェック、または単にCGLIB_CLASS_SEPARATORを含むかどうかのチェックを優先するstatic booleanisInnerClass(ClassSE<?> clazz) 指定されたクラスが内部クラスであるかどうかを決定します。static booleanisJavaLanguageInterface(ClassSE<?> ifc) 指定されたインターフェースが共通の Java 言語インターフェースであるかどうかを判別します:SerializableSE、ExternalizableSE、CloseableSE、AutoCloseableSE、CloneableSE、ComparableSE-「プライマリ」ユーザーレベルインターフェースを探す場合、これらはすべて無視できます。static booleanisLambdaClass(ClassSE<?> clazz) 提供されたClassSE が、ラムダ式またはメソッド参照用に JVM で生成された実装クラスであるかどうかを判別します。static booleanisPresent(StringSE className, @Nullable ClassLoaderSE classLoader) 指定された名前で識別されるClassSE が存在し、ロードできるかどうかを判別します。static booleanisPrimitiveArray(ClassSE<?> clazz) 指定されたクラスがプリミティブの配列を表すかどうかを確認します。static booleanisPrimitiveOrWrapper(ClassSE<?> clazz) 指定されたクラスがプリミティブを表すかどうかを確認します(つまりstatic booleanisPrimitiveWrapper(ClassSE<?> clazz) 指定されたクラスがプリミティブラッパーを表すかどうかを確認します。static booleanisPrimitiveWrapperArray(ClassSE<?> clazz) 指定されたクラスがプリミティブラッパーの配列を表すかどうかを確認します。static booleanisSimpleValueType(ClassSE<?> type) static booleanisStaticClass(ClassSE<?> clazz) 提供されたクラスが静的クラスかどうかを判別します。static booleanisUserLevelMethod(MethodSE method) 指定されたメソッドがユーザーによって宣言されているか、少なくともユーザーが宣言したメソッドを指しているかを判断します。static booleanisVisible(ClassSE<?> clazz, @Nullable ClassLoaderSE classLoader) 指定されたクラスが指定された ClassLoader に表示されるかどうかを確認します。static booleanisVoidType(@Nullable ClassSE<?> type) 指定された型がVoidまたはvoidのいずれかを表すかを判断します。static booleanmatchesTypeName(ClassSE<?> clazz, @Nullable StringSE typeName) 指定されたクラスがユーザー指定の型名と一致するかどうかを確認します。static @Nullable ClassLoaderSEoverrideThreadContextClassLoader(@Nullable ClassLoaderSE classLoaderToUse) 必要に応じて、スレッドコンテキスト ClassLoader を環境の Bean ClassLoader でオーバーライドします。static ClassSE<?> resolveClassName(StringSE className, @Nullable ClassLoaderSE classLoader) 指定されたクラス名を Class インスタンスに解決します。必要に応じて、プリミティブクラスに関する JVM の命名規則に従って、指定されたクラス名をプリミティブクラスとして解決します。static ClassSE<?> resolvePrimitiveIfNecessary(ClassSE<?> clazz) 指定されたクラスがプリミティブクラスの場合は解決し、対応するプリミティブラッパー型を代わりに返します。static ClassSE<?>[]toClassArray(@Nullable CollectionSE<ClassSE<?>> collection) 指定されたCollectionをClass配列にコピーします。
フィールドの詳細
ARRAY_SUFFIX
CGLIB_CLASS_SEPARATOR
CLASS_FILE_SUFFIX
コンストラクターの詳細
ClassUtils
public ClassUtils()
メソッドの詳細
getDefaultClassLoader
使用するデフォルト ClassLoader を返します。通常、スレッドコンテキスト ClassLoader(使用可能な場合)。ClassUtils クラスをロードした ClassLoader がフォールバックとして使用されます。null 以外の ClassLoader 参照を明確に好むシナリオでスレッドコンテキスト ClassLoader を使用する場合は、このメソッドを呼び出します。たとえば、クラスパスリソースのロード(必ずしも
nullClassLoader 参照を受け入れる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- 対応するクラスは解決可能であるが、クラスの継承階層に可読性の不一致があった場合 (typically a missing dependency declaration in a Java Module System module definition for a superclass or interface implemented by the class to be loaded here)- 関連事項:
isPresent
指定された名前で識別されるClassSE が存在し、ロード可能かどうかを判断します。クラスまたはその依存関係のいずれかが存在しないか、ロードできない場合は、falseを返します。- パラメーター:
className- チェックするクラスの名前classLoader- 使用するクラスローダー (デフォルトのクラスローダーを示すnullにすることができます)- 戻り値:
- 指定されたクラスが存在するかどうか (すべてのスーパークラスとインターフェースを含む)
- 例外:
IllegalStateExceptionSE- 対応するクラスは解決可能であるが、クラスの継承階層に可読性の不一致があった場合 (typically a missing dependency declaration in a Java Module System module definition for a superclass or interface implemented by the class to be checked here)
isVisible
@Contract("_, null -> true") public static boolean isVisible(ClassSE<?> clazz, @Nullable ClassLoaderSE classLoader) 指定されたクラスが指定された ClassLoader に表示されるかどうかを確認します。- パラメーター:
clazz- チェックするクラス (通常はインターフェース)classLoader- チェックする ClassLoader (nullの場合、このメソッドは常にtrueを返します。)
isCacheSafe
指定されたクラスが指定されたコンテキストでキャッシュセーフであるかどうか、つまり、指定された 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
指定されたクラスがプリミティブラッパーを表すかどうかを確認します。つまり、ブール、バイト、文字、ショート、整数、ロング、フロート、ダブル、Void です。- パラメーター:
clazz- チェックするクラス- 戻り値:
- 指定されたクラスがプリミティブラッパークラスかどうか
isPrimitiveOrWrapper
指定されたクラスがプリミティブ (boolean、byte、char、short、int、long、float、double)、void、またはそれらの型のラッパー (Boolean、Byte、Character、Short、Integer、Long、Float、Double、Void) を表しているかどうかを確認します。- パラメーター:
clazz- チェックするクラス- 戻り値:
true: 指定されたクラスがプリミティブ、ボイド、ラッパークラスを表す場合
isPrimitiveArray
指定されたクラスがプリミティブの配列を表すかどうかを確認します。つまり、ブール、バイト、char、short、int、long、float、double です。- パラメーター:
clazz- チェックするクラス- 戻り値:
- 指定されたクラスがプリミティブ配列クラスかどうか
isPrimitiveWrapperArray
指定されたクラスがプリミティブラッパーの配列、つまり、ブール、バイト、文字、短、整数、長、浮動、または倍を表すかどうかを確認します。- パラメーター:
clazz- チェックするクラス- 戻り値:
- 指定されたクラスがプリミティブラッパー配列クラスかどうか
resolvePrimitiveIfNecessary
isVoidType
isSimpleValueType
BeanUtils.isSimpleValueType(Class)の代理人。ObjectUtils.nullSafeConciseToString(Object)によっても使用されます。Check if the given type represents a common "simple" value type: primitive or primitive wrapper,
EnumSE,StringSE or otherCharSequenceSE,NumberSE,DateSE,TemporalSE,ZoneIdSE,TimeZoneSE,FileSE,PathSE,URISE,URLSE,InetAddressSE,CharsetSE,CurrencySE,LocaleSE,UUIDSE,PatternSE, orClassSE .Voidおよびvoidは単純な値型とは見なされません。- パラメーター:
type- チェックする型- 戻り値:
- 指定された型が「単純な」値型を表すかどうか、値ベースのデータバインディングと
toString出力を提案します。 - 導入:
- 6.1
isAssignable
isAssignableValue
convertResourcePathToClassName
convertClassNameToResourcePath
addResourcePathToPackagePath
ClassLoader.getResourceでの使用に適したパスを返します (戻り値の前にスラッシュ ('/') を追加することにより、Class.getResourceでの使用にも適しています)。指定されたクラスファイルのパッケージを取得し、すべてのドット ('.') をスラッシュに変換してビルドされます ('/'), 必要に応じて末尾にスラッシュを追加し、指定されたリソース名をこれに連結します。
そのため、この関数を使用して、クラスファイルと同じパッケージにあるリソースファイルをロードするのに適したパスを構築できますが、通常はClassPathResourceの方が便利です。- パラメーター:
clazz- パッケージがベースとして使用されるクラスresourceName- 追加するリソース名。先頭のスラッシュはオプションです。- 戻り値:
- 構築されたリソースパス
- 関連事項:
classPackageAsResourcePath
入力クラスオブジェクトを指定すると、クラスのパッケージ名で構成される文字列をパス名として返します。つまり、すべてのドット('.' )はスラッシュ('/')に置き換えられます。先頭と末尾のスラッシュは追加されません。結果は、スラッシュとリソースの名前で連結され、ClassLoader.getResource()に直接供給されます。代わりにClass.getResourceに送るには、戻り値の前にスラッシュを付ける必要があります。- パラメーター:
clazz- 入力クラス。null値またはデフォルト(空)のパッケージでは、空の文字列("")が返されます。- 戻り値:
- パッケージ名を表すパス
- 関連事項:
classNamesToString
classNamesToString
指定されたコレクション内のクラス / インターフェースの名前で構成される文字列を作成します。基本的に
AbstractCollection.toString()に似ていますが、すべてのクラス名の前にある「クラス "/"interface " プレフィックス」を削除します。- パラメーター:
classes- Class オブジェクトのコレクション (nullにすることができます)- 戻り値:
- 「[com.foo.Bar、com.foo.Baz]」という形式の文字列
- 関連事項:
toClassArray
指定されたCollectionをClass配列にコピーします。CollectionにはClass要素のみが含まれている必要があります。- パラメーター:
collection- コピーするCollection- 戻り値:
Class配列- 導入:
- 3.1
- 関連事項:
getAllInterfaces
getAllInterfacesForClass
getAllInterfacesForClass
public static ClassSE<?>[] getAllInterfacesForClass(ClassSE<?> clazz, @Nullable ClassLoaderSE classLoader) 指定されたクラスが配列として実装するすべてのインターフェースを返します(スーパークラスによって実装されたインターフェースを含む)。クラス自体がインターフェースの場合、唯一のインターフェースとして返されます。
- パラメーター:
clazz- インターフェースを分析するクラスclassLoader- インターフェースを表示する必要がある ClassLoader (宣言されたすべてのインターフェースを受け入れる場合はnullにすることができます)- 戻り値:
- 指定されたオブジェクトが配列として実装するすべてのインターフェース
getAllInterfacesAsSet
getAllInterfacesForClassAsSet
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
指定されたインターフェースが一般的な Java 言語インターフェースであるかどうかを判断します。SerializableSE,ExternalizableSE,CloseableSE,AutoCloseableSE,CloneableSE,ComparableSE -「プライマリ」ユーザーレベルのインターフェースを探す場合、これらはすべて無視できます。共通の特徴: サービスレベルの操作、Bean プロパティメソッド、デフォルトメソッドはありません。- パラメーター:
ifc- チェックするインターフェース- 導入:
- 5.0.3
isStaticClass
提供されたクラスが静的クラスかどうかを判別します。- 戻り値:
- 指定されたクラスが静的クラスの場合は
true - 導入:
- 6.0
- 関連事項:
isInnerClass
指定されたクラスが内部クラスであるかどうか、つまり、包含クラスの非静的メンバーであるかどうかを判断します。- 戻り値:
true(提供されたクラスが内部クラスの場合)- 導入:
- 5.0.5
- 関連事項:
isLambdaClass
isCglibProxy
使用すべきではありません。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
getUserClass
getDescriptiveType
matchesTypeName
getShortName
修飾パッケージ名なしでクラス名を取得します。- パラメーター:
className- className の短縮名を取得するには- 戻り値:
- パッケージ名なしのクラスのクラス名
- 例外:
IllegalArgumentExceptionSE- className が空の場合
getShortName
getShortNameAsProperty
getClassFileName
getPackageName
getPackageName
getQualifiedName
getQualifiedMethodName
getQualifiedMethodName
hasConstructor
getConstructorIfAvailable
public static <T> @Nullable ConstructorSE<T> getConstructorIfAvailable(ClassSE<T> clazz, ClassSE<?>... paramTypes) 指定されたクラスに指定された署名を持つ public コンストラクターがあるかどうかを判断し、使用可能な場合はそれを返します(そうでない場合はnullを返します)。本質的に
NoSuchMethodExceptionをnullに変換します。- パラメーター:
clazz- 分析するクラブparamTypes- メソッドのパラメーター型- 戻り値:
- コンストラクター、または見つからない場合は
null - 関連事項:
hasMethod
hasMethod
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
hasAtLeastOneMethodWithName
getMostSpecificMethod
インターフェースから来る可能性のあるメソッドと、現在のリフレクト呼び出しで使用されるターゲットクラスを指定して、対応するターゲットメソッドがあればそれを見つけます。たとえば、メソッドがIFoo.bar()で、ターゲットクラスがDefaultFooである場合があります。この場合、メソッドはDefaultFoo.bar()である可能性があります。これにより、そのメソッドの属性を見つけることができます。注 :
AopUtils.getMostSpecificMethod(Method, Class)とは対照的に、このメソッドはブリッジメソッドを自動的に解決しません。ブリッジメソッドの解決が必要な場合 (たとえば、元のメソッド定義からメタデータを取得する場合) は、BridgeMethodResolver.findBridgedMethod(Method)を呼び出します。注意 : Java のセキュリティ設定でリフレクションアクセスが許可されていない場合 — たとえば、
Class#getDeclaredMethodsなどの呼び出し。この実装は、最初に提供されたメソッドを返すようにフォールバックします。- パラメーター:
method- 呼び出されるメソッド。インターフェースから取得される場合がありますtargetClass- 現在の呼び出しのターゲットクラス (nullである場合もあれば、メソッドを実装していない場合もあります)- 戻り値:
- 特定のターゲットメソッド、または
targetClassがそれを実装していない場合は元のメソッド - 関連事項:
getInterfaceMethodIfPossible
使用すべきではありません。可能であれば、指定されたメソッドハンドルに対応するインターフェースメソッドを決定します。これは、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) 可能であれば、指定されたメソッドと同等のメソッドシグネチャーを持つ、指定されたメソッドの型階層内で最も近いパブリックにアクセス可能なメソッドを取得します。This method recursively searches the class hierarchy and implemented interfaces for an equivalent method that is
public, declared in apublictype, and exportedSE tospring-core.If the supplied method is not
publicor isstatic, or if a publicly accessible equivalent method cannot be found, the supplied method will be returned, indicating that no such equivalent method exists. Consequently, callers of this method must manually validate the accessibility of the returned method if public access is a requirement.This is particularly useful for arriving at a public exported type on the Java Module System which allows the method to be invoked via reflection without an illegal access warning. This is also useful for invoking methods via a public API in bytecode — for example, for use with the Spring Expression Language (SpEL) compiler. For example, if a non-public class overrides
toString(), this method will traverse up the type hierarchy to find the first public type that declares the method (if there is one). FortoString(), it may traverse as far asObjectSE。- パラメーター:
method- 呼び出されるメソッド、場合によっては実装クラスからtargetClass- メソッドを呼び出す対象クラス、または不明な場合はnull- 戻り値:
- the corresponding publicly accessible method, or the original method if none found
- 導入:
- 6.2
- 関連事項:
isUserLevelMethod
指定されたメソッドがユーザーによって宣言されているか、少なくともユーザーが宣言したメソッドを指しているかを判断します。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 の場合
getInterfaceMethodIfPossible(Method, Class)を推奨