クラス 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
 
- コンストラクターの詳細- MethodInvokerpublic 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- 呼び出し側がまだ準備されていない場合
- 関連事項:
 
- isPreparedpublic 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- 一致する引数
- 戻り値:
- すべての引数の累積重み