クラス MethodInvoker
- 既知の直属サブクラス
ArgumentConvertingMethodInvoker
使用方法: "targetClass "/"targetMethod" " または "targetObject"/"targetMethod" " を指定し、オプションで引数を指定して、呼び出し元を準備します。その後、メソッドを何度でも呼び出して、呼び出し結果を取得できます。
フィールドサマリー
コンストラクターのサマリー
メソッドのサマリー
修飾子と型メソッド説明protected MethodSE
指定された引数に指定された名前を持つ一致するメソッドを見つけます。ObjectSE[]
メソッド呼び出しの引数を返します。呼び出される準備済みの Method オブジェクトを返します。ClassSE<?>
ターゲットメソッドを呼び出すターゲットクラスを返します。呼び出されるメソッドの名前を返します。ターゲットメソッドを呼び出すターゲットオブジェクトを返します。static int
getTypeDifferenceWeight
(ClassSE<?>[] paramTypes, ObjectSE[] args) 候補メソッドの宣言されたパラメーター型と、このメソッドが呼び出されることになっている引数の特定のリストとの間の一致を判断するアルゴリズム。invoke()
指定されたメソッドを呼び出します。boolean
この呼び出し元がすでに準備されているかどうか、つまりvoid
prepare()
指定されたメソッドを準備します。protected ClassSE<?>
resolveClassName
(StringSE className) 指定されたクラス名をクラスに解決します。void
setArguments
(ObjectSE... arguments) メソッド呼び出しの引数を設定します。void
setStaticMethod
(StringSE staticMethod) 呼び出す完全修飾静的メソッド名を設定します (例: "example.MyExampleClass.myExampleMethod" )。void
setTargetClass
(ClassSE<?> targetClass) ターゲットメソッドを呼び出すターゲットクラスを設定します。void
setTargetMethod
(StringSE targetMethod) 呼び出されるメソッドの名前を設定します。void
setTargetObject
(ObjectSE targetObject) ターゲットメソッドを呼び出すターゲットオブジェクトを設定します。
フィールドの詳細
targetClass
コンストラクターの詳細
MethodInvoker
public MethodInvoker()
メソッドの詳細
setTargetClass
ターゲットメソッドを呼び出すターゲットクラスを設定します。ターゲットメソッドが静的な場合にのみ必要です。それ以外の場合は、ターゲットオブジェクトを指定する必要があります。getTargetClass
ターゲットメソッドを呼び出すターゲットクラスを返します。setTargetObject
ターゲットメソッドを呼び出すターゲットオブジェクトを設定します。ターゲットメソッドが静的でない場合にのみ必要です。それ以外の場合は、ターゲットクラスで十分です。getTargetObject
ターゲットメソッドを呼び出すターゲットオブジェクトを返します。setTargetMethod
呼び出されるメソッドの名前を設定します。設定するターゲットオブジェクトに応じて、静的メソッドまたは非静的メソッドのいずれかを指します。getTargetMethod
呼び出されるメソッドの名前を返します。setStaticMethod
呼び出す完全修飾静的メソッド名を設定します (例: "example.MyExampleClass.myExampleMethod" )。これは、targetClass および targetMethod を指定する代わりに便利です。setArguments
メソッド呼び出しの引数を設定します。このプロパティが設定されていない場合、または Object 配列の長さが 0 の場合、引数のないメソッドが想定されます。getArguments
メソッド呼び出しの引数を返します。prepare
指定されたメソッドを準備します。このメソッドは、その後何度でも呼び出すことができます。resolveClassName
指定されたクラス名をクラスに解決します。デフォルトの実装では、スレッドコンテキストクラスローダーを使用して
ClassUtils.forName
を使用します。- パラメーター:
className
- 解決するクラス名- 戻り値:
- 解決されたクラス
- 例外:
ClassNotFoundExceptionSE
- クラス名が無効だった場合
findMatchingMethod
指定された引数に指定された名前を持つ一致するメソッドを見つけます。- 戻り値:
- 一致するメソッド。ない場合は
null
- 関連事項:
getPreparedMethod
呼び出される準備済みの Method オブジェクトを返します。たとえば、戻り値の型を決定するために使用できます。
- 戻り値:
- 準備された Method オブジェクト (非
null
) - 例外:
IllegalStateExceptionSE
- 呼び出し側がまだ準備されていない場合- 関連事項:
isPrepared
public boolean isPrepared()この呼び出し元がすでに準備されているかどうか、つまり、getPreparedMethod()
へのアクセスをすでに許可しているかどうかを返します。invoke
指定されたメソッドを呼び出します。呼び出し元は、事前に準備されている必要があります。
- 戻り値:
- メソッドの呼び出しによって返されたオブジェクト(null の可能性がある)、またはメソッドに void の戻り型がある場合は
null
- 例外:
InvocationTargetExceptionSE
- ターゲットメソッドが例外をスローした場合IllegalAccessExceptionSE
- ターゲットメソッドにアクセスできなかった場合- 関連事項:
getTypeDifferenceWeight
候補メソッドの宣言されたパラメーター型と、このメソッドが呼び出されることになっている引数の特定のリストとの間の一致を判断するアルゴリズム。型と引数の間のクラス階層の違いを表す重みを決定します。直接一致、つまり整数 → と入力します。クラス Integer の arg は、結果を増加させません - すべての直接一致は重み 0 を意味します。型 Object とクラス Integer の arg が一致すると、階層内のスーパークラス 2 ステップ(つまり Object)により、重みが 2 増加します。必要な型のオブジェクトにまだ一致する最後のもの。型 Number とクラス Integer は、それに応じて重みを 1 増やします。これは、スーパークラス 1 が階層をステップアップするため(つまり、Number)、必要な型 Number と一致しているためです。整数型の引数を使用すると、コンストラクター(整数)がコンストラクター(数値)よりも優先され、コンストラクター(数値)がコンストラクター(オブジェクト)よりも優先されます。すべての引数の重みが累積されます。
メモ: これは、MethodInvoker 自体で使用されるアルゴリズムであり、Spring の Bean コンテナーでコンストラクターとファクトリメソッドを選択するために使用されるアルゴリズムです(通常の Bean 定義のデフォルトである寛大なコンストラクター解決の場合)。
- パラメーター:
paramTypes
- 一致するパラメーター型args
- 一致する引数- 戻り値:
- すべての引数の累積重み