public abstract class ClassUtils extends ObjectSE
java.lang.Class
ユーティリティメソッド。主にフレームワーク内での内部使用向け。TypeUtils
, ReflectionUtils
修飾子と型 | フィールドと説明 |
---|---|
static StringSE | ARRAY_SUFFIX 配列クラス名のサフィックス: "[]" |
static StringSE | CGLIB_CLASS_SEPARATOR CGLIB クラスセパレーター: "$$" . |
static StringSE | CLASS_FILE_SUFFIX ".class" ファイルのサフィックス。 |
コンストラクターと説明 |
---|
ClassUtils() |
修飾子と型 | メソッドと説明 |
---|---|
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) プリミティブのクラスインスタンスも返す Class.forName() の代替(例: |
static ClassSE<?>[] | getAllInterfaces(ObjectSE instance) 指定されたインスタンスがスーパークラスによって実装されたものを含む配列として実装するすべてのインターフェースを返します。 |
static SetSE<ClassSE<?>> | getAllInterfacesAsSet(ObjectSE instance) 指定されたインスタンスが Set として実装するすべてのインターフェースを返します。これにはスーパークラスによって実装されたものも含まれます。 |
static ClassSE<?>[] | getAllInterfacesForClass(ClassSE<?> clazz) 指定されたクラスが配列として実装するすべてのインターフェースを返します(スーパークラスによって実装されたインターフェースを含む)。 |
static ClassSE<?>[] | getAllInterfacesForClass(ClassSE<?> clazz, ClassLoaderSE classLoader) 指定されたクラスが配列として実装するすべてのインターフェースを返します(スーパークラスによって実装されたインターフェースを含む)。 |
static SetSE<ClassSE<?>> | getAllInterfacesForClassAsSet(ClassSE<?> clazz) スーパークラスによって実装されたものを含め、指定されたクラスが Set として実装するすべてのインターフェースを返します。 |
static SetSE<ClassSE<?>> | getAllInterfacesForClassAsSet(ClassSE<?> clazz, ClassLoaderSE classLoader) スーパークラスによって実装されたものを含め、指定されたクラスが Set として実装するすべてのインターフェースを返します。 |
static StringSE | getClassFileName(ClassSE<?> clazz) 含まれるパッケージに関連するクラスファイルの名前を決定します。 |
static <T> ConstructorSE<T> | getConstructorIfAvailable(ClassSE<T> clazz, ClassSE<?>... paramTypes) 指定されたクラスに指定された署名を持つ public コンストラクターがあるかどうかを判断し、使用可能な場合はそれを返します(そうでない場合は null を返します)。 |
static ClassLoaderSE | getDefaultClassLoader() 使用するデフォルト ClassLoader を返します。通常、スレッドコンテキスト ClassLoader(使用可能な場合)。ClassUtils クラスをロードした ClassLoader がフォールバックとして使用されます。 |
static StringSE | getDescriptiveType(ObjectSE value) 指定されたオブジェクトの型を説明する名前を返します。通常は単にクラス名ですが、コンポーネント型のクラス名 + 配列の "[]"、および JDK プロキシの実装済みインターフェースの追加リスト。 |
static MethodSE | getInterfaceMethodIfPossible(MethodSE method) 可能であれば、指定されたメソッドハンドルに対応するインターフェースメソッドを決定します。 |
static MethodSE | getMethod(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... paramTypes) 指定されたクラスに指定された署名を持つ 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) インターフェースから取得されるメソッドと、現在のリフレクト呼び出しで使用されるターゲットクラスが指定されている場合、対応するターゲットメソッドがあればそれを見つけます。 |
static StringSE | getPackageName(ClassSE<?> clazz) 指定されたクラスのパッケージの名前を決定します。 |
static StringSE | getPackageName(StringSE fqClassName) 指定された完全修飾クラス名のパッケージの名前を決定します。 |
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 | 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 | isAssignableValue(ClassSE<?> type, ObjectSE value) リフレクションによる設定を想定して、指定された型が指定された値から割り当て可能かどうかを判断します。 |
static boolean | isCacheSafe(ClassSE<?> clazz, ClassLoaderSE classLoader) 指定されたクラスが指定されたコンテキストでキャッシュセーフかどうかを確認します。 |
static boolean | isCglibProxy(ObjectSE object) 使用すべきではありません。 5.2 の時点で、カスタム(より狭い可能性あり)チェックを推奨 |
static boolean | isCglibProxyClass(ClassSE<?> clazz) 使用すべきではありません。 5.2 の時点で、カスタム(より狭い可能性あり)チェックを推奨 |
static boolean | isCglibProxyClassName(StringSE className) 使用すべきではありません。 5.2 の時点で、カスタム(より狭い可能性あり)チェックを推奨 |
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 | 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 | isUserLevelMethod(MethodSE method) 指定されたメソッドがユーザーによって宣言されているか、少なくともユーザーが宣言したメソッドを指しているかを判断します。 |
static boolean | isVisible(ClassSE<?> clazz, ClassLoaderSE classLoader) 指定されたクラスが指定された ClassLoader に表示されるかどうかを確認します。 |
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<?> | resolvePrimitiveClassName(StringSE name) 必要に応じて、プリミティブクラスに関する JVM の命名規則に従って、指定されたクラス名をプリミティブクラスとして解決します。 |
static ClassSE<?> | resolvePrimitiveIfNecessary(ClassSE<?> clazz) 指定されたクラスがプリミティブクラスの場合は解決し、対応するプリミティブラッパー型を代わりに返します。 |
static ClassSE<?>[] | toClassArray(CollectionSE<ClassSE<?>> collection) 指定された Collection を Class 配列にコピーします。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public static final StringSE CGLIB_CLASS_SEPARATOR
"$$"
.@Nullable public static ClassLoaderSE getDefaultClassLoader()
null 以外の ClassLoader 参照を明確に好むシナリオでスレッドコンテキスト ClassLoader を使用する場合は、このメソッドを呼び出します。たとえば、クラスパスリソースのロード(必ずしも null
ClassLoader 参照を受け入れる Class.forName
の場合は必要ありません)。
null
)Thread.getContextClassLoader()
SE, ClassLoader.getSystemClassLoader()
SE@Nullable public static ClassLoaderSE overrideThreadContextClassLoader(@Nullable ClassLoaderSE classLoaderToUse)
classLoaderToUse
- スレッドコンテキストに使用する実際の ClassLoadernull
public static ClassSE<?> forName(StringSE name, @Nullable ClassLoaderSE classLoader) throws ClassNotFoundExceptionSE, LinkageErrorSE
Class.forName()
の代替。さらに、Java ソーススタイルで内部クラス名を解決することもできます(たとえば、"java.lang.Thread$State" の代わりに "java.lang.Thread.State" )。name
- クラスの名前 classLoader
- 使用するクラスローダー (デフォルトのクラスローダーを示す null
の場合があります)ClassNotFoundExceptionSE
- クラスが見つからなかった場合 LinkageErrorSE
- クラスファイルをロードできなかった場合 Class.forName(String, boolean, ClassLoader)
SEpublic static ClassSE<?> resolveClassName(StringSE className, @Nullable ClassLoaderSE classLoader) throws IllegalArgumentExceptionSE
これは、同じ引数を持つ forName
メソッドと事実上同等ですが、唯一の違いは、クラスのロードに失敗した場合にスローされる例外です。
className
- クラスの名前 classLoader
- 使用するクラスローダー (デフォルトのクラスローダーを示す null
の場合があります)IllegalArgumentExceptionSE
- クラス名が解決できなかった場合 (つまり、クラスが見つからなかったか、クラスファイルをロードできませんでした)IllegalStateExceptionSE
- 対応するクラスは解決可能であるが、クラスの継承階層に可読性の不一致があった場合 (通常、ここにロードされるクラスによって実装されるスーパークラスまたはインターフェースの Jigsaw モジュール定義に欠落している依存関係宣言)forName(String, ClassLoader)
public static boolean isPresent(StringSE className, @Nullable ClassLoaderSE classLoader)
Class
SE が存在し、ロードできるかどうかを判別します。クラスまたはその依存関係のいずれかが存在しないか、ロードできない場合、false
を返します。className
- チェックするクラスの名前 classLoader
- 使用するクラスローダー (デフォルトのクラスローダーを示す null
の場合があります)IllegalStateExceptionSE
- 対応するクラスは解決可能であるが、クラスの継承階層に可読性の不一致があった場合 (通常、ここでチェックされるクラスによって実装されるスーパークラスまたはインターフェースの Jigsaw モジュール定義に欠落している依存関係宣言)public static boolean isVisible(ClassSE<?> clazz, @Nullable ClassLoaderSE classLoader)
clazz
- チェックするクラス (通常はインターフェース)classLoader
- チェックする ClassLoader (null
の場合があります。この場合、このメソッドは常に true
を返します。)public static boolean isCacheSafe(ClassSE<?> clazz, @Nullable ClassLoaderSE classLoader)
clazz
- 分析するクラス classLoader
- メタデータを潜在的にキャッシュする ClassLoader (システムクラスローダーを示す null
)@Nullable public static ClassSE<?> resolvePrimitiveClassName(@Nullable StringSE name)
プリミティブ配列の JVM の内部クラス名もサポートします。プリミティブ配列の "[]" サフィックス表記はサポートされていません。これは forName(String, ClassLoader)
でのみサポートされています。
name
- 潜在的にプリミティブなクラスの名前 null
public static boolean isPrimitiveWrapper(ClassSE<?> clazz)
clazz
- チェックするクラス public static boolean isPrimitiveOrWrapper(ClassSE<?> clazz)
void
、それらの型のラッパー(Boolean、Byte、Character、Short、Integer、Long、Float、Double、Void)。clazz
- チェックするクラス true
: 指定されたクラスがプリミティブ、ボイド、ラッパークラスを表す場合 public static boolean isPrimitiveArray(ClassSE<?> clazz)
clazz
- チェックするクラス public static boolean isPrimitiveWrapperArray(ClassSE<?> clazz)
clazz
- チェックするクラス public static ClassSE<?> resolvePrimitiveIfNecessary(ClassSE<?> clazz)
clazz
- チェックするクラス public static boolean isAssignable(ClassSE<?> lhsType, ClassSE<?> rhsType)
lhsType
- ターゲット型 rhsType
- ターゲットの型に割り当てられる値の型 TypeUtils.isAssignable(java.lang.reflect.Type, java.lang.reflect.Type)
public static boolean isAssignableValue(ClassSE<?> type, @Nullable ObjectSE value)
type
- ターゲット型 value
- 型に割り当てられる値 public static StringSE convertResourcePathToClassName(StringSE resourcePath)
resourcePath
- クラスを指すリソースパス public static StringSE convertClassNameToResourcePath(StringSE className)
className
- 完全修飾クラス名 public static StringSE addResourcePathToPackagePath(ClassSE<?> clazz, StringSE resourceName)
ClassLoader.getResource
での使用に適したパスを返します (戻り値の前にスラッシュ ('/') を追加することにより、Class.getResource
での使用にも適しています)。指定されたクラスファイルのパッケージを取得し、すべてのドット ('.') をスラッシュに変換してビルドされます ('/'), 必要に応じて末尾にスラッシュを追加し、指定されたリソース名をこれに連結します。ClassPathResource
の方が便利です。clazz
- パッケージがベースとして使用されるクラス resourceName
- 追加するリソース名。先頭のスラッシュはオプションです。ClassLoader.getResource(java.lang.String)
SE, Class.getResource(java.lang.String)
SEpublic static StringSE classPackageAsResourcePath(@Nullable ClassSE<?> clazz)
ClassLoader.getResource()
に直接供給されます。代わりに Class.getResource
に送るには、戻り値の前にスラッシュを付ける必要があります。clazz
- 入力クラス。null
値またはデフォルト(空)のパッケージでは、空の文字列("")が返されます。ClassLoader.getResource(java.lang.String)
SE, Class.getResource(java.lang.String)
SEpublic static StringSE classNamesToString(ClassSE<?>... classes)
基本的に AbstractCollection.toString()
に似ていますが、すべてのクラス名の前にある「クラス "/"interface " プレフィックス」を削除します。
classes
- Class オブジェクトの配列 AbstractCollection.toString()
SEpublic static StringSE classNamesToString(@Nullable CollectionSE<ClassSE<?>> classes)
基本的に AbstractCollection.toString()
に似ていますが、すべてのクラス名の前にある「クラス "/"interface " プレフィックス」を削除します。
classes
- Class オブジェクトのコレクション (null
の場合があります)AbstractCollection.toString()
SEpublic static ClassSE<?>[] toClassArray(@Nullable CollectionSE<ClassSE<?>> collection)
Collection
を Class
配列にコピーします。Collection
には Class
要素のみが含まれている必要があります。
collection
- コピーする Collection
Class
配列 StringUtils.toStringArray(java.util.Collection<java.lang.String>)
public static ClassSE<?>[] getAllInterfaces(ObjectSE instance)
instance
- インターフェースを分析するインスタンス public static ClassSE<?>[] getAllInterfacesForClass(ClassSE<?> clazz)
クラス自体がインターフェースの場合、唯一のインターフェースとして返されます。
clazz
- インターフェースを分析するクラス public static ClassSE<?>[] getAllInterfacesForClass(ClassSE<?> clazz, @Nullable ClassLoaderSE classLoader)
クラス自体がインターフェースの場合、唯一のインターフェースとして返されます。
clazz
- インターフェースを分析するクラス classLoader
- インターフェースを表示する必要がある ClassLoader (宣言されたすべてのインターフェースを受け入れる場合、null
になる可能性があります)public static SetSE<ClassSE<?>> getAllInterfacesAsSet(ObjectSE instance)
instance
- インターフェースを分析するインスタンス public static SetSE<ClassSE<?>> getAllInterfacesForClassAsSet(ClassSE<?> clazz)
クラス自体がインターフェースの場合、唯一のインターフェースとして返されます。
clazz
- インターフェースを分析するクラス public static SetSE<ClassSE<?>> getAllInterfacesForClassAsSet(ClassSE<?> clazz, @Nullable ClassLoaderSE classLoader)
クラス自体がインターフェースの場合、唯一のインターフェースとして返されます。
clazz
- インターフェースを分析するクラス classLoader
- インターフェースを表示する必要がある ClassLoader (宣言されたすべてのインターフェースを受け入れる場合、null
になる可能性があります)public static ClassSE<?> createCompositeInterface(ClassSE<?>[] interfaces, @Nullable ClassLoaderSE classLoader)
この実装は、指定されたインターフェースの JDK プロキシクラスを構築します。
interfaces
- マージするインターフェース classLoader
- ClassLoader で複合クラスを作成します IllegalArgumentExceptionSE
- 指定されたインターフェースが競合するメソッドシグネチャーを公開する場合 (または同様の制約に違反している)Proxy.getProxyClass(java.lang.ClassLoader, java.lang.Class<?>...)
SE@Nullable public static ClassSE<?> determineCommonAncestor(@Nullable ClassSE<?> clazz1, @Nullable ClassSE<?> clazz2)
clazz1
- イントロスペクトするクラス clazz2
- イントロスペクトする他のクラス null
が見つからない場合。指定されたクラスのいずれかが null
の場合、他のクラスが返されます。public static boolean isJavaLanguageInterface(ClassSE<?> ifc)
Serializable
SE, Externalizable
SE, Closeable
SE, AutoCloseable
SE, Cloneable
SE, Comparable
SE -「プライマリ」ユーザーレベルのインターフェースを探す場合、これらはすべて無視できます。共通の特徴: サービスレベルの操作、Bean プロパティメソッド、デフォルトメソッドはありません。ifc
- チェックするインターフェース public static boolean isInnerClass(ClassSE<?> clazz)
true
(提供されたクラスが内部クラスの場合)Class.isMemberClass()
SE@DeprecatedSE public static boolean isCglibProxy(ObjectSE object)
object
- チェックするオブジェクト isCglibProxyClass(Class)
, AopUtils.isCglibProxy(Object)
@DeprecatedSE public static boolean isCglibProxyClass(@Nullable ClassSE<?> clazz)
clazz
- チェックするクラス isCglibProxyClassName(String)
@DeprecatedSE public static boolean isCglibProxyClassName(@Nullable StringSE className)
className
- チェックするクラス名 public static ClassSE<?> getUserClass(ObjectSE instance)
instance
- チェックするインスタンス public static ClassSE<?> getUserClass(ClassSE<?> clazz)
clazz
- チェックするクラス @Nullable public static StringSE getDescriptiveType(@Nullable ObjectSE value)
value
- イントロスペクトする価値 public static boolean matchesTypeName(ClassSE<?> clazz, @Nullable StringSE typeName)
clazz
- チェックするクラス typeName
- 一致する型名 public static StringSE getShortName(StringSE className)
className
- className の短縮名を取得するには IllegalArgumentExceptionSE
- className が空の場合 public static StringSE getShortName(ClassSE<?> clazz)
clazz
- 短い名前を取得するクラス public static StringSE getShortNameAsProperty(ClassSE<?> clazz)
clazz
- クラス Introspector.decapitalize(String)
SEpublic static StringSE getClassFileName(ClassSE<?> clazz)
clazz
- クラス public static StringSE getPackageName(ClassSE<?> clazz)
java.lang.String
クラスの "java.lang"。clazz
- クラス public static StringSE getPackageName(StringSE fqClassName)
java.lang.String
クラス名の "java.lang"。fqClassName
- 完全修飾クラス名 public static StringSE getQualifiedName(ClassSE<?> clazz)
clazz
- クラス public static StringSE getQualifiedMethodName(MethodSE method)
method
- メソッド public static StringSE getQualifiedMethodName(MethodSE method, @Nullable ClassSE<?> clazz)
method
- メソッド clazz
- メソッドが呼び出されている場所 (メソッドの宣言クラスを示す null
の場合があります)public static boolean hasConstructor(ClassSE<?> clazz, ClassSE<?>... paramTypes)
基本的に NoSuchMethodException
を "false" に変換します。
clazz
- 分析するクラブ paramTypes
- メソッドのパラメーター型 Class.getConstructor(java.lang.Class<?>...)
SE@Nullable public static <T> ConstructorSE<T> getConstructorIfAvailable(ClassSE<T> clazz, ClassSE<?>... paramTypes)
null
を返します)。 本質的に NoSuchMethodException
を null
に変換します。
clazz
- 分析するクラブ paramTypes
- メソッドのパラメーター型 null
Class.getConstructor(java.lang.Class<?>...)
SEpublic static boolean hasMethod(ClassSE<?> clazz, MethodSE method)
clazz
- 分析するクラブ method
- 探す方法 public static boolean hasMethod(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... paramTypes)
基本的に NoSuchMethodException
を "false" に変換します。
clazz
- 分析するクラブ methodName
- メソッドの名前 paramTypes
- メソッドのパラメーター型 Class.getMethod(java.lang.String, java.lang.Class<?>...)
SEpublic static MethodSE getMethod(ClassSE<?> clazz, StringSE methodName, @Nullable ClassSE<?>... paramTypes)
IllegalStateException
をスローします)。署名が指定されている場合は、一意の候補、つまり指定された名前の単一の public メソッドがある場合にのみメソッドを返します。
本質的に NoSuchMethodException
を IllegalStateException
に変換します。
clazz
- 分析するクラブ methodName
- メソッドの名前 paramTypes
- メソッドのパラメーター型 (署名を示す null
の場合があります)null
)IllegalStateExceptionSE
- メソッドが見つからなかった場合 Class.getMethod(java.lang.String, java.lang.Class<?>...)
SE@Nullable public static MethodSE getMethodIfAvailable(ClassSE<?> clazz, StringSE methodName, @Nullable ClassSE<?>... paramTypes)
null
を返します)。署名が指定されている場合は、一意の候補、つまり指定された名前の単一の public メソッドがある場合にのみメソッドを返します。
本質的に NoSuchMethodException
を null
に変換します。
clazz
- 分析するクラブ methodName
- メソッドの名前 paramTypes
- メソッドのパラメーター型 (署名を示す null
の場合があります)null
Class.getMethod(java.lang.String, java.lang.Class<?>...)
SEpublic static int getMethodCountForName(ClassSE<?> clazz, StringSE methodName)
clazz
- チェックするクラズ methodName
- メソッドの名前 public static boolean hasAtLeastOneMethodWithName(ClassSE<?> clazz, StringSE methodName)
clazz
- チェックするクラズ methodName
- メソッドの名前 public static MethodSE getMostSpecificMethod(MethodSE method, @Nullable ClassSE<?> targetClass)
IFoo.bar()
で、ターゲットクラスは DefaultFoo
です。この場合、メソッドは DefaultFoo.bar()
になります。これにより、そのメソッドの属性を見つけることができます。 注 :AopUtils.getMostSpecificMethod(java.lang.reflect.Method, java.lang.Class<?>)
とは異なり、このメソッドは Java 5 ブリッジメソッドを自動的に解決しません。ブリッジメソッドの解決が望ましい場合(たとえば、元のメソッド定義からメタデータを取得する場合)、BridgeMethodResolver.findBridgedMethod(java.lang.reflect.Method)
を呼び出します。
注 :Spring 3.1.1 以降、Java セキュリティ設定でリフレクティブアクセスが許可されていない場合(たとえば、Class#getDeclaredMethods
の呼び出しなど)、この実装は最初に提供されたメソッドを返すことにフォールバックします。
method
- 呼び出されるメソッド。インターフェースから取得される場合があります targetClass
- 現在の呼び出しのターゲットクラス (null
であるか、メソッドを実装していない可能性があります)targetClass
がそれを実装していない場合は元のメソッド getInterfaceMethodIfPossible(java.lang.reflect.Method)
public static MethodSE getInterfaceMethodIfPossible(MethodSE method)
これは、Jigsaw の公開エクスポート型に到達する場合に特に役立ちます。Jigsaw は、不正アクセス警告なしで反射的に呼び出すことができます。
method
- 呼び出されるメソッド、場合によっては実装クラスから getMostSpecificMethod(java.lang.reflect.Method, java.lang.Class<?>)
public static boolean isUserLevelMethod(MethodSE method)
Method.isSynthetic()
SE(実装メソッドの場合)と GroovyObject
インターフェース(インターフェースメソッドの場合。実装クラスでは、GroovyObject
メソッドの実装は合成とマークされます)をチェックします。合成であるにもかかわらず、ブリッジメソッド(Method.isBridge()
SE)は最終的にユーザー宣言のジェネリクスメソッドを指すため、ユーザーレベルのメソッドと見なされることに注意してください。
method
- チェックする方法 true
(メソッドがユーザー宣言と見なされる場合)。[@code false} それ以外の場合 @Nullable public static MethodSE getStaticMethod(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... args)
clazz
- メソッドを定義するクラス methodName
- 静的メソッド名 args
- メソッドへのパラメーターの型 null
IllegalArgumentExceptionSE
- メソッド名が空白または clazz が null の場合