クラス ClassUtils
java.lang.Class
ユーティリティメソッド。主にフレームワーク内での内部使用向け。
- 導入:
- 1.1
- 作成者:
- Juergen Hoeller, Keith Donald, Rob Harrop, Sam Brannen, Sebastien Deleuze, Sungbin Yang
- 関連事項:
フィールドサマリー
コンストラクターのサマリー
メソッドのサマリー
修飾子と型メソッド説明static StringSE
addResourcePathToPackagePath
(ClassSE<?> clazz, StringSE resourceName) ClassLoader.getResource
での使用に適したパスを返します(戻り値の前にスラッシュ('/')を追加することにより、Class.getResource
での使用にも適しています)。static StringSE
classNamesToString
(ClassSE<?>... classes) 指定された配列内のクラス / インターフェースの名前で構成される文字列を作成します。static StringSE
classNamesToString
(CollectionSE<ClassSE<?>> classes) 指定されたコレクション内のクラス / インターフェースの名前で構成される文字列を作成します。static StringSE
classPackageAsResourcePath
(ClassSE<?> clazz) 入力クラスオブジェクトを指定すると、クラスのパッケージ名をパス名として含む文字列を返します。つまり、すべてのドット('.' )をスラッシュ('/')に置き換えます。static StringSE
convertClassNameToResourcePath
(StringSE className) "." -based 完全修飾クラス名を「/"-based リソースパス」に変換します。static StringSE
convertResourcePathToClassName
(StringSE resourcePath) 「/"-based リソースパスを "." -based 完全修飾クラス名に変換します。static ClassSE<?>
createCompositeInterface
(ClassSE<?>[] interfaces, ClassLoaderSE classLoader) 指定されたインターフェースの複合インターフェースクラスを作成し、指定されたインターフェースを 1 つの単一クラスに実装します。static ClassSE<?>
determineCommonAncestor
(ClassSE<?> clazz1, ClassSE<?> clazz2) 指定されたクラスの共通の祖先がある場合、それを決定します。static ClassSE<?>
forName
(StringSE name, 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, ClassLoaderSE classLoader) 指定されたクラスが配列として実装するすべてのインターフェースを返します(スーパークラスによって実装されたインターフェースを含む)。getAllInterfacesForClassAsSet
(ClassSE<?> clazz) スーパークラスによって実装されたものを含め、指定されたクラスが Set として実装するすべてのインターフェースを返します。getAllInterfacesForClassAsSet
(ClassSE<?> clazz, ClassLoaderSE classLoader) スーパークラスによって実装されたものを含め、指定されたクラスが Set として実装するすべてのインターフェースを返します。static StringSE
getClassFileName
(ClassSE<?> clazz) クラスファイルの名前を、それを含むパッケージを基準にして決定します (例: "String.class" )。static <T> ConstructorSE<T>
getConstructorIfAvailable
(ClassSE<T> clazz, ClassSE<?>... paramTypes) 指定されたクラスに指定された署名を持つ public コンストラクターがあるかどうかを判断し、使用可能な場合はそれを返します(そうでない場合はnull
を返します)。static ClassLoaderSE
使用するデフォルト ClassLoader を返します。通常、スレッドコンテキスト ClassLoader(使用可能な場合)。ClassUtils クラスをロードした ClassLoader がフォールバックとして使用されます。static StringSE
getDescriptiveType
(ObjectSE value) 指定されたオブジェクトの型を説明する名前を返します。通常は単にクラス名ですが、コンポーネント型のクラス名 + 配列の "[]"、および JDK プロキシの実装済みインターフェースの追加リスト。static MethodSE
getInterfaceMethodIfPossible
(MethodSE method) 使用すべきではありません。static MethodSE
getInterfaceMethodIfPossible
(MethodSE method, ClassSE<?> targetClass) 可能であれば、指定されたメソッドハンドルに対応するインターフェースメソッドを決定します。static MethodSE
指定されたクラスに指定された署名を持つ public メソッドがあるかどうかを判断し、使用可能な場合はそれを返します(そうでない場合はIllegalStateException
をスローします)。static int
getMethodCountForName
(ClassSE<?> clazz, StringSE methodName) 指定されたクラスおよび / またはそのスーパークラスについて、指定された名前(引数の型)を持つメソッドの数を返します。static MethodSE
getMethodIfAvailable
(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... paramTypes) 指定されたクラスに指定された署名を持つ public メソッドがあるかどうかを判断し、利用可能な場合はそれを返します(そうでない場合はnull
を返します)。static MethodSE
getMostSpecificMethod
(MethodSE method, ClassSE<?> targetClass) インターフェースから来る可能性のあるメソッドと、現在のリフレクト呼び出しで使用されるターゲットクラスを指定して、対応するターゲットメソッドがあればそれを見つけます。たとえば、メソッドがIFoo.bar()
で、ターゲットクラスがDefaultFoo
である場合があります。static StringSE
getPackageName
(ClassSE<?> clazz) 指定されたクラスのパッケージ名を決定します。たとえば、java.lang.String
クラスの場合は "java.lang" です。static StringSE
getPackageName
(StringSE fqClassName) 指定された完全修飾クラス名のパッケージ名を決定します。たとえば、java.lang.String
クラス名の場合は "java.lang" です。static MethodSE
getPubliclyAccessibleMethodIfPossible
(MethodSE method, ClassSE<?> targetClass) 可能であれば、指定されたメソッドと同等のメソッドシグネチャーを持つ、指定されたメソッドの型階層内で最初のパブリックにアクセス可能なメソッドを取得します。static StringSE
getQualifiedMethodName
(MethodSE method) 完全修飾インターフェース / クラス名 + "." で構成される、指定されたメソッドの修飾名を返します。+ メソッド名。static StringSE
getQualifiedMethodName
(MethodSE method, ClassSE<?> clazz) 完全修飾インターフェース / クラス名 + "." で構成される、指定されたメソッドの修飾名を返します。+ メソッド名。static StringSE
getQualifiedName
(ClassSE<?> clazz) 指定されたクラスの修飾名を返します。通常は単にクラス名ですが、配列の場合はコンポーネント型クラス名 + "[]"。static StringSE
getShortName
(ClassSE<?> clazz) 修飾パッケージ名なしでクラス名を取得します。static StringSE
getShortName
(StringSE className) 修飾パッケージ名なしでクラス名を取得します。static StringSE
getShortNameAsProperty
(ClassSE<?> clazz) Java クラスの短い文字列名を大文字ではない JavaBeans プロパティ形式で返します。static MethodSE
getStaticMethod
(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... args) クラスのパブリック静的メソッドを返します。static ClassSE<?>
getUserClass
(ClassSE<?> clazz) 指定されたクラスのユーザー定義クラスを返します。通常は単に指定されたクラスですが、CGLIB で生成されたサブクラスの場合は元のクラスです。static ClassSE<?>
getUserClass
(ObjectSE instance) 指定されたインスタンスのユーザー定義クラスを返します。通常は、単に指定されたインスタンスのクラスですが、CGLIB で生成されたサブクラスの場合は元のクラスです。static boolean
hasAtLeastOneMethodWithName
(ClassSE<?> clazz, StringSE methodName) 指定されたクラスまたはそのスーパークラスの 1 つに、指定された名前(引数の型)を持つメソッドが少なくとも 1 つありますか? 非 public メソッドが含まれます。static boolean
hasConstructor
(ClassSE<?> clazz, ClassSE<?>... paramTypes) 指定されたクラスに、指定された署名を持つ public コンストラクターがあるかどうかを判断します。static boolean
指定されたクラスに、指定された署名を持つ public メソッドがあるかどうかを判断します。static boolean
指定されたクラスに、指定された署名を持つ public メソッドがあるかどうかを判断します。static boolean
isAssignable
(ClassSE<?> lhsType, ClassSE<?> rhsType) リフレクションによる設定を想定して、右側の型を左側の型に割り当てることができるかどうかを確認します。static boolean
isAssignableValue
(ClassSE<?> type, ObjectSE value) リフレクションによる設定を想定して、指定された型が指定された値から割り当て可能かどうかを判断します。static boolean
isCacheSafe
(ClassSE<?> clazz, ClassLoaderSE classLoader) 指定されたクラスが指定されたコンテキストでキャッシュセーフかどうかを確認します。static boolean
isCglibProxy
(ObjectSE object) 使用すべきではありません。5.2 の時点で、Spring AOP プロキシなどのカスタム (おそらくより狭い) チェックを優先static boolean
isCglibProxyClass
(ClassSE<?> clazz) 使用すべきではありません。5.2 の時点で、カスタム (おそらくより狭い) チェックまたは単にCGLIB_CLASS_SEPARATOR
を含むためのチェックを優先static boolean
isCglibProxyClassName
(StringSE className) 使用すべきではありません。5.2 の時点で、カスタム (おそらくより狭い) チェックまたは単にCGLIB_CLASS_SEPARATOR
を含むためのチェックを優先static boolean
isInnerClass
(ClassSE<?> clazz) 指定されたクラスが内部クラスであるかどうかを決定します。static boolean
isJavaLanguageInterface
(ClassSE<?> ifc) 指定されたインターフェースが共通の Java 言語インターフェースであるかどうかを判別します:Serializable
SE、Externalizable
SE、Closeable
SE、AutoCloseable
SE、Cloneable
SE、Comparable
SE-「プライマリ」ユーザーレベルインターフェースを探す場合、これらはすべて無視できます。static boolean
isLambdaClass
(ClassSE<?> clazz) 提供されたClass
SE が、ラムダ式またはメソッド参照用に JVM で生成された実装クラスであるかどうかを判別します。static boolean
isPresent
(StringSE className, ClassLoaderSE classLoader) 指定された名前で識別されるClass
SE が存在し、ロードできるかどうかを判別します。static boolean
isPrimitiveArray
(ClassSE<?> clazz) 指定されたクラスがプリミティブの配列を表すかどうかを確認します。static boolean
isPrimitiveOrWrapper
(ClassSE<?> clazz) 指定されたクラスがプリミティブを表すかどうかを確認します(つまりstatic boolean
isPrimitiveWrapper
(ClassSE<?> clazz) 指定されたクラスがプリミティブラッパーを表すかどうかを確認します。static boolean
isPrimitiveWrapperArray
(ClassSE<?> clazz) 指定されたクラスがプリミティブラッパーの配列を表すかどうかを確認します。static boolean
isSimpleValueType
(ClassSE<?> type) static boolean
isStaticClass
(ClassSE<?> clazz) 提供されたクラスが静的クラスかどうかを判別します。static boolean
isUserLevelMethod
(MethodSE method) 指定されたメソッドがユーザーによって宣言されているか、少なくともユーザーが宣言したメソッドを指しているかを判断します。static boolean
isVisible
(ClassSE<?> clazz, ClassLoaderSE classLoader) 指定されたクラスが指定された ClassLoader に表示されるかどうかを確認します。static boolean
isVoidType
(ClassSE<?> type) 指定された型がVoid
またはvoid
のいずれかを表すかを判断します。static boolean
matchesTypeName
(ClassSE<?> clazz, StringSE typeName) 指定されたクラスがユーザー指定の型名と一致するかどうかを確認します。static ClassLoaderSE
overrideThreadContextClassLoader
(ClassLoaderSE classLoaderToUse) 必要に応じて、スレッドコンテキスト ClassLoader を環境の Bean ClassLoader でオーバーライドします。static ClassSE<?>
resolveClassName
(StringSE className, ClassLoaderSE classLoader) 指定されたクラス名を Class インスタンスに解決します。static ClassSE<?>
必要に応じて、プリミティブクラスに関する JVM の命名規則に従って、指定されたクラス名をプリミティブクラスとして解決します。static ClassSE<?>
resolvePrimitiveIfNecessary
(ClassSE<?> clazz) 指定されたクラスがプリミティブクラスの場合は解決し、対応するプリミティブラッパー型を代わりに返します。static ClassSE<?>[]
toClassArray
(CollectionSE<ClassSE<?>> collection) 指定されたCollection
をClass
配列にコピーします。
フィールドの詳細
コンストラクターの詳細
ClassUtils
public ClassUtils()
メソッドの詳細
getDefaultClassLoader
使用するデフォルト ClassLoader を返します。通常、スレッドコンテキスト ClassLoader(使用可能な場合)。ClassUtils クラスをロードした ClassLoader がフォールバックとして使用されます。null 以外の ClassLoader 参照を明確に好むシナリオでスレッドコンテキスト ClassLoader を使用する場合は、このメソッドを呼び出します。たとえば、クラスパスリソースのロード(必ずしも
null
ClassLoader 参照を受け入れるClass.forName
の場合は必要ありません)。- 戻り値:
- デフォルトの ClassLoader (システム ClassLoader にもアクセスできない場合にのみ
null
) - 関連事項:
overrideThreadContextClassLoader
@Nullable public static 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
指定された名前で識別されるClass
SE が存在し、ロードできるかどうかを判別します。クラスまたはその依存関係のいずれかが存在しないか、ロードできない場合、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
指定されたクラスが指定された ClassLoader に表示されるかどうかを確認します。- パラメーター:
clazz
- チェックするクラス (通常はインターフェース)classLoader
- チェックする ClassLoader (null
の場合、このメソッドは常にtrue
を返します。)
isCacheSafe
指定されたクラスが指定されたコンテキストでキャッシュセーフであるかどうか、つまり、指定された ClassLoader またはその親によって読み込まれたかどうかを確認します。- パラメーター:
clazz
- 分析するクラスclassLoader
- メタデータを潜在的にキャッシュする ClassLoader (システムクラスローダーを示すnull
にすることができます)
resolvePrimitiveClassName
必要に応じて、プリミティブクラスに関する 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
指定されたクラスがプリミティブクラスの場合は解決し、対応するプリミティブラッパー型を代わりに返します。- パラメーター:
clazz
- チェックするクラス- 戻り値:
- 元のクラス、または元のプリミティブ型のプリミティブラッパー
isVoidType
指定された型がVoid
またはvoid
のいずれかを表すかを判断します。- パラメーター:
type
- チェックする型- 戻り値:
true
(型がVoid
またはvoid
を表す場合)- 導入:
- 6.1.4
- 関連事項:
isSimpleValueType
BeanUtils.isSimpleValueType(java.lang.Class<?>)
の代理人。ObjectUtils.nullSafeConciseToString(java.lang.Object)
によっても使用されます。Check if the given type represents a common "simple" value type: primitive or primitive wrapper,
Enum
SE,String
SE or otherCharSequence
SE,Number
SE,Date
SE,Temporal
SE,ZoneId
SE,TimeZone
SE,File
SE,Path
SE,URI
SE,URL
SE,InetAddress
SE,Charset
SE,Currency
SE,Locale
SE,UUID
SE,Pattern
SE, orClass
SE .Void
およびvoid
は単純な値型とは見なされません。- パラメーター:
type
- チェックする型- 戻り値:
- 指定された型が「単純な」値型を表すかどうか、値ベースのデータバインディングと
toString
出力を提案します。 - 導入:
- 6.1
isAssignable
リフレクションによる設定を想定して、右側の型を左側の型に割り当てることができるかどうかを確認します。プリミティブラッパークラスを、対応するプリミティブ型に割り当て可能と見なします。- パラメーター:
lhsType
- ターゲット型(左側(LHS)型)rhsType
- ターゲット型に割り当てる必要がある値の型 (右側 (RHS) 型)- 戻り値:
true
(rhsType
がlhsType
に割り当て可能な場合)- 関連事項:
isAssignableValue
リフレクションによる設定を想定して、指定された型が指定された値から割り当て可能かどうかを判断します。プリミティブラッパークラスを、対応するプリミティブ型に割り当て可能と見なします。- パラメーター:
type
- ターゲット型value
- 型に割り当てられる値- 戻り値:
- 型が値から割り当て可能な場合
convertResourcePathToClassName
「/"-based リソースパスを "." -based 完全修飾クラス名に変換します。- パラメーター:
resourcePath
- クラスを指すリソースパス- 戻り値:
- 対応する完全修飾クラス名
convertClassNameToResourcePath
"." -based 完全修飾クラス名を「/"-based リソースパス」に変換します。- パラメーター:
className
- 完全修飾クラス名- 戻り値:
- クラスを指す対応するリソースパス
addResourcePathToPackagePath
ClassLoader.getResource
での使用に適したパスを返します (戻り値の前にスラッシュ ('/') を追加することにより、Class.getResource
での使用にも適しています)。指定されたクラスファイルのパッケージを取得し、すべてのドット ('.') をスラッシュに変換してビルドされます ('/'), 必要に応じて末尾にスラッシュを追加し、指定されたリソース名をこれに連結します。
そのため、この関数を使用して、クラスファイルと同じパッケージにあるリソースファイルをロードするのに適したパスを構築できますが、通常はClassPathResource
の方が便利です。- パラメーター:
clazz
- パッケージがベースとして使用されるクラスresourceName
- 追加するリソース名。先頭のスラッシュはオプションです。- 戻り値:
- 構築されたリソースパス
- 関連事項:
classPackageAsResourcePath
入力クラスオブジェクトを指定すると、クラスのパッケージ名で構成される文字列をパス名として返します。つまり、すべてのドット('.' )はスラッシュ('/')に置き換えられます。先頭と末尾のスラッシュは追加されません。結果は、スラッシュとリソースの名前で連結され、ClassLoader.getResource()
に直接供給されます。代わりにClass.getResource
に送るには、戻り値の前にスラッシュを付ける必要があります。- パラメーター:
clazz
- 入力クラス。null
値またはデフォルト(空)のパッケージでは、空の文字列("")が返されます。- 戻り値:
- パッケージ名を表すパス
- 関連事項:
classNamesToString
指定された配列内のクラス / インターフェースの名前で構成される文字列を作成します。基本的に
AbstractCollection.toString()
に似ていますが、すべてのクラス名の前にある「クラス "/"interface " プレフィックス」を削除します。- パラメーター:
classes
- Class オブジェクトの配列- 戻り値:
- 「[com.foo.Bar、com.foo.Baz]」という形式の文字列
- 関連事項:
classNamesToString
指定されたコレクション内のクラス / インターフェースの名前で構成される文字列を作成します。基本的に
AbstractCollection.toString()
に似ていますが、すべてのクラス名の前にある「クラス "/"interface " プレフィックス」を削除します。- パラメーター:
classes
- Class オブジェクトのコレクション (null
にすることができます)- 戻り値:
- 「[com.foo.Bar、com.foo.Baz]」という形式の文字列
- 関連事項:
toClassArray
指定されたCollection
をClass
配列にコピーします。Collection
にはClass
要素のみが含まれている必要があります。- パラメーター:
collection
- コピーするCollection
- 戻り値:
Class
配列- 導入:
- 3.1
- 関連事項:
getAllInterfaces
指定されたインスタンスがスーパークラスによって実装されたものを含む配列として実装するすべてのインターフェースを返します。- パラメーター:
instance
- インターフェースを分析するインスタンス- 戻り値:
- 指定されたインスタンスが配列として実装するすべてのインターフェース
getAllInterfacesForClass
指定されたクラスが配列として実装するすべてのインターフェースを返します(スーパークラスによって実装されたインターフェースを含む)。クラス自体がインターフェースの場合、唯一のインターフェースとして返されます。
- パラメーター:
clazz
- インターフェースを分析するクラス- 戻り値:
- 指定されたオブジェクトが配列として実装するすべてのインターフェース
getAllInterfacesForClass
public static ClassSE<?>[] getAllInterfacesForClass(ClassSE<?> clazz, @Nullable ClassLoaderSE classLoader) 指定されたクラスが配列として実装するすべてのインターフェースを返します(スーパークラスによって実装されたインターフェースを含む)。クラス自体がインターフェースの場合、唯一のインターフェースとして返されます。
- パラメーター:
clazz
- インターフェースを分析するクラスclassLoader
- インターフェースを表示する必要がある ClassLoader (宣言されたすべてのインターフェースを受け入れる場合はnull
にすることができます)- 戻り値:
- 指定されたオブジェクトが配列として実装するすべてのインターフェース
getAllInterfacesAsSet
指定されたインスタンスが Set として実装するすべてのインターフェースを返します。これにはスーパークラスによって実装されたものも含まれます。- パラメーター:
instance
- インターフェースを分析するインスタンス- 戻り値:
- 指定されたインスタンスがセットとして実装するすべてのインターフェース
getAllInterfacesForClassAsSet
スーパークラスによって実装されたものを含め、指定されたクラスが 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
@Nullable public static ClassSE<?> determineCommonAncestor(@Nullable ClassSE<?> clazz1, @Nullable ClassSE<?> clazz2) 指定されたクラスの共通の祖先がある場合、それを決定します。- パラメーター:
clazz1
- イントロスペクトするクラスclazz2
- イントロスペクトする他のクラス- 戻り値:
- 共通の祖先(つまり、共通のスーパークラス、1 つのインターフェースが他を継承したもの)、
null
が見つからない場合。指定されたクラスのいずれかがnull
の場合、他のクラスが返されます。 - 導入:
- 3.2.6
isJavaLanguageInterface
指定されたインターフェースが一般的な Java 言語インターフェースであるかどうかを判断します。Serializable
SE,Externalizable
SE,Closeable
SE,AutoCloseable
SE,Cloneable
SE,Comparable
SE -「プライマリ」ユーザーレベルのインターフェースを探す場合、これらはすべて無視できます。共通の特徴: サービスレベルの操作、Bean プロパティメソッド、デフォルトメソッドはありません。- パラメーター:
ifc
- チェックするインターフェース- 導入:
- 5.0.3
isStaticClass
提供されたクラスが静的クラスかどうかを判別します。- 戻り値:
- 指定されたクラスが静的クラスの場合は
true
- 導入:
- 6.0
- 関連事項:
isInnerClass
指定されたクラスが内部クラスであるかどうか、つまり、包含クラスの非静的メンバーであるかどうかを判断します。- 戻り値:
true
(提供されたクラスが内部クラスの場合)- 導入:
- 5.0.5
- 関連事項:
isLambdaClass
提供されたClass
SE が、ラムダ式またはメソッド参照用に JVM で生成された実装クラスであるかどうかを判別します。この方法は、最新の主流の JVM で機能するチェックに基づいて、これを決定するために最善を尽くします。
- パラメーター:
clazz
- チェックするクラス- 戻り値:
- クラスがラムダ実装クラスの場合は
true
- 導入:
- 5.3.19
isCglibProxy
使用すべきではありません。5.2 の時点で、Spring AOP プロキシなどのカスタム (おそらくより狭い) チェックを優先指定されたオブジェクトが CGLIB プロキシかどうかを確認します。- パラメーター:
object
- チェックするオブジェクト- 関連事項:
isCglibProxyClass
使用すべきではありません。5.2 の時点で、カスタム (おそらくより狭い) チェックまたは単にCGLIB_CLASS_SEPARATOR
を含むためのチェックを優先指定されたクラスが CGLIB 生成クラスであるかどうかを確認します。- パラメーター:
clazz
- チェックするクラス- 関連事項:
isCglibProxyClassName
使用すべきではありません。5.2 の時点で、カスタム (おそらくより狭い) チェックまたは単にCGLIB_CLASS_SEPARATOR
を含むためのチェックを優先指定されたクラス名が CGLIB 生成クラスかどうかを確認します。- パラメーター:
className
- チェックするクラス名- 関連事項:
getUserClass
指定されたインスタンスのユーザー定義クラスを返します。通常は、単に指定されたインスタンスのクラスですが、CGLIB で生成されたサブクラスの場合は元のクラスです。- パラメーター:
instance
- チェックするインスタンス- 戻り値:
- ユーザー定義クラス
getUserClass
指定されたクラスのユーザー定義クラスを返します。通常は単に指定されたクラスですが、CGLIB で生成されたサブクラスの場合は元のクラスです。- パラメーター:
clazz
- チェックするクラス- 戻り値:
- ユーザー定義クラス
- 関連事項:
getDescriptiveType
指定されたオブジェクトの型を説明する名前を返します。通常は単にクラス名ですが、コンポーネント型のクラス名 + 配列の "[]"、および JDK プロキシの実装済みインターフェースの追加リスト。- パラメーター:
value
- イントロスペクトする価値- 戻り値:
- クラスの修飾名
matchesTypeName
指定されたクラスがユーザー指定の型名と一致するかどうかを確認します。- パラメーター:
clazz
- チェックするクラスtypeName
- 一致する型名
getShortName
修飾パッケージ名なしでクラス名を取得します。- パラメーター:
className
- className の短縮名を取得するには- 戻り値:
- パッケージ名なしのクラスのクラス名
- 例外:
IllegalArgumentExceptionSE
- className が空の場合
getShortName
修飾パッケージ名なしでクラス名を取得します。- パラメーター:
clazz
- 短い名前を取得するクラス- 戻り値:
- パッケージ名なしのクラスのクラス名
getShortNameAsProperty
Java クラスの短い文字列名を大文字でない JavaBeans プロパティ形式で返します。ネストされたクラスの場合、外部クラス名を削除します。- パラメーター:
clazz
- クラス- 戻り値:
- 標準の JavaBeans プロパティ形式でレンダリングされた短い名前
- 関連事項:
getClassFileName
クラスファイルの名前を、それを含むパッケージを基準にして決定します (例: "String.class" )。- パラメーター:
clazz
- クラス- 戻り値:
- ".class" ファイルのファイル名
getPackageName
指定されたクラスのパッケージ名を決定します。たとえば、java.lang.String
クラスの場合は "java.lang" です。- パラメーター:
clazz
- クラス- 戻り値:
- パッケージ名、またはクラスがデフォルトのパッケージで定義されている場合は空の文字列
getPackageName
指定された完全修飾クラス名のパッケージ名を決定します。たとえば、java.lang.String
クラス名の場合は "java.lang" です。- パラメーター:
fqClassName
- 完全修飾クラス名- 戻り値:
- パッケージ名、またはクラスがデフォルトのパッケージで定義されている場合は空の文字列
getQualifiedName
指定されたクラスの修飾名を返します。通常は単にクラス名ですが、配列の場合はコンポーネント型クラス名 + "[]"。- パラメーター:
clazz
- クラス- 戻り値:
- クラスの修飾名
getQualifiedMethodName
完全修飾インターフェース / クラス名 + "." で構成される、指定されたメソッドの修飾名を返します。+ メソッド名。- パラメーター:
method
- メソッド- 戻り値:
- メソッドの修飾名
getQualifiedMethodName
完全修飾インターフェース / クラス名 + "." で構成される、指定されたメソッドの修飾名を返します。+ メソッド名。- パラメーター:
method
- メソッドclazz
- メソッドが呼び出されている場所 (メソッドの宣言クラスを示すためにnull
にすることができます)- 戻り値:
- メソッドの修飾名
- 導入:
- 4.3.4
hasConstructor
指定されたクラスに、指定された署名を持つ public コンストラクターがあるかどうかを判断します。基本的に
NoSuchMethodException
を "false" に変換します。- パラメーター:
clazz
- 分析するクラブparamTypes
- メソッドのパラメーター型- 戻り値:
- クラスに対応するコンストラクターがあるかどうか
- 関連事項:
getConstructorIfAvailable
@Nullable public static <T> ConstructorSE<T> getConstructorIfAvailable(ClassSE<T> clazz, ClassSE<?>... paramTypes) 指定されたクラスに指定された署名を持つ public コンストラクターがあるかどうかを判断し、使用可能な場合はそれを返します(そうでない場合はnull
を返します)。本質的に
NoSuchMethodException
をnull
に変換します。- パラメーター:
clazz
- 分析するクラブparamTypes
- メソッドのパラメーター型- 戻り値:
- コンストラクター、または見つからない場合は
null
- 関連事項:
hasMethod
指定されたクラスに、指定された署名を持つ public メソッドがあるかどうかを判断します。- パラメーター:
clazz
- 分析するクラブmethod
- 探す方法- 戻り値:
- クラスに対応するメソッドがあるかどうか
- 導入:
- 5.2.3
hasMethod
指定されたクラスに、指定された署名を持つ 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
@Nullable public static MethodSE getMethodIfAvailable(ClassSE<?> clazz, StringSE methodName, @Nullable ClassSE<?>... paramTypes) 指定されたクラスに指定された署名を持つ public メソッドがあるかどうかを判断し、利用可能な場合はそれを返します(そうでない場合はnull
を返します)。署名が指定されている場合は、一意の候補、つまり指定された名前の単一の public メソッドがある場合にのみメソッドを返します。
本質的に
NoSuchMethodException
をnull
に変換します。- パラメーター:
clazz
- 分析するクラブmethodName
- メソッドの名前paramTypes
- メソッドのパラメーター型 (null
は任意の署名を示すことができる)- 戻り値:
- メソッド。見つからない場合は
null
- 関連事項:
getMethodCountForName
指定されたクラスまたはそのスーパークラス、あるいはその両方について、指定された名前(引数型を含む)を持つメソッドの数を返します。非公開メソッドを含みます。- パラメーター:
clazz
- チェックするクラズmethodName
- メソッドの名前- 戻り値:
- 指定された名前のメソッドの数
hasAtLeastOneMethodWithName
指定されたクラスまたはそのスーパークラスの 1 つに、指定された名前(引数の型)を持つメソッドが少なくとも 1 つありますか? 非 public メソッドが含まれます。- パラメーター:
clazz
- チェックするクラズmethodName
- メソッドの名前- 戻り値:
- 指定された名前のメソッドが少なくとも 1 つあるかどうか
getMostSpecificMethod
インターフェースから来る可能性のあるメソッドと、現在のリフレクト呼び出しで使用されるターゲットクラスを指定して、対応するターゲットメソッドがあればそれを見つけます。たとえば、メソッドがIFoo.bar()
で、ターゲットクラスがDefaultFoo
である場合があります。この場合、メソッドはDefaultFoo.bar()
である可能性があります。これにより、そのメソッドの属性を見つけることができます。注 :
AopUtils.getMostSpecificMethod(java.lang.reflect.Method, java.lang.Class<?>)
とは対照的に、このメソッドはブリッジメソッドを自動的に解決しません。ブリッジメソッドの解決が必要な場合 (たとえば、元のメソッド定義からメタデータを取得する場合) は、BridgeMethodResolver.findBridgedMethod(java.lang.reflect.Method)
を呼び出します。注意 : Java のセキュリティ設定でリフレクションアクセスが許可されていない場合 — たとえば、
Class#getDeclaredMethods
などの呼び出し。この実装は、最初に提供されたメソッドを返すようにフォールバックします。- パラメーター:
method
- 呼び出されるメソッド。インターフェースから取得される場合がありますtargetClass
- 現在の呼び出しのターゲットクラス (null
である場合もあれば、メソッドを実装していない場合もあります)- 戻り値:
- 特定のターゲットメソッド、または
targetClass
がそれを実装していない場合は元のメソッド - 関連事項:
getInterfaceMethodIfPossible
使用すべきではありません。可能であれば、指定されたメソッドハンドルに対応するインターフェースメソッドを決定します。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.
- パラメーター:
method
- 呼び出されるメソッド、場合によっては実装クラスから- 戻り値:
- 対応するインターフェースメソッド、または見つからない場合は元のメソッド
- 導入:
- 5.1
- 関連事項:
getInterfaceMethodIfPossible
public static MethodSE getInterfaceMethodIfPossible(MethodSE method, @Nullable ClassSE<?> targetClass) 可能であれば、指定されたメソッドハンドルに対応するインターフェースメソッドを決定します。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.
- パラメーター:
method
- 呼び出されるメソッド、場合によっては実装クラスからtargetClass
- メソッドを呼び出す対象クラス、または不明な場合はnull
- 戻り値:
- 対応するインターフェースメソッド、または見つからない場合は元のメソッド
- 導入:
- 5.3.16
- 関連事項:
getPubliclyAccessibleMethodIfPossible
public static MethodSE getPubliclyAccessibleMethodIfPossible(MethodSE method, @Nullable ClassSE<?> targetClass) 可能であれば、指定されたメソッドと同等のメソッドシグネチャーを持つ、指定されたメソッドの型階層内で最初のパブリックにアクセス可能なメソッドを取得します。If the supplied method is
public
and declared in apublic
type, the supplied method will be returned.Otherwise, this method recursively searches the class hierarchy and implemented interfaces for an equivalent method that is
public
and declared in apublic
type.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 asObject
SE。- パラメーター:
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
@Nullable public static MethodSE getStaticMethod(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... args) クラスのパブリック静的メソッドを返します。- パラメーター:
clazz
- メソッドを定義するクラスmethodName
- 静的メソッド名args
- メソッドへのパラメーターの型- 戻り値:
- 静的メソッド、または静的メソッドが見つからなかった場合は
null
- 例外:
IllegalArgumentExceptionSE
- メソッド名が空白または clazz が null の場合
getInterfaceMethodIfPossible(Method, Class)
を推奨