引数の量は何であるかを事前に知らなくてもメソッドを呼び出す必要があります。
私の引数を含むオブジェクトの配列を2番目のパラメータとして渡すと、実際には動作しませんでしたが、Method.invoke(Object、Object ...)というメンバを使ってみました。
私は後に何をする方法がありますか?引数で複数の引数を受け入れるInvokeメソッド
答えて
これを行う方法は正しい方法です。ただし、引数配列には、ターゲットメソッドと同じ数の引数を指定する必要があります。それらは正しい順序でリストされ、適切なタイプを持たなければなりません。あなたが取得している例外スタックトレースとコードサンプルを投稿できますか?
私は間違った議論をしてコールしましたが、それはすべてが失敗する原因となりましたが、コールに戻ることは困難でした。 ありがとう:) – em70
Method
オブジェクトを取得したら、getParameterTypes()を使用してこれを判断できます。 JavaDocから:
このMethodオブジェクトによって表されるメソッド の宣言順に仮パラメータの型、 を表すClassオブジェクトの配列を返します。 の基本メソッドにパラメータがない場合は、長さ0の配列を返します。
Varargsが方法です。 チェックdocs:
メソッドに渡されますどのように多くの引数の特定の種類の分からないときは、可変引数を使用します。これは、配列を手動で作成するための簡単な方法です。
varargsを使用するには、最後のパラメータのタイプに省略記号(3つのドット、...)、スペース、およびパラメータ名を続けます。このメソッドは、noneを含む任意の数のそのパラメータで呼び出すことができます。
public Polygon polygonFrom(Point... corners) {
int numberOfSides = corners.length;
double squareOfSide1, lengthOfSide1;
squareOfSide1 = (corners[1].x - corners[0].x)*(corners[1].x - corners[0].x)
+ (corners[1].y - corners[0].y)*(corners[1].y - corners[0].y) ;
lengthOfSide1 = Math.sqrt(squareOfSide1);
// more method body code follows that creates
// and returns a polygon connecting the Points
}
PS。 VarargsはJava 1.5以降で使用できます。
上記の方法に配列を渡すことさえできます: ポイント[] p = {新しいポイント(1,2)、新しいポイント(3,4)、新しいポイント(5,6)}; ploygonFrom(p); – Thushan
- 1. ロガーの引数の可変数を受け入れる
- 2. 関数への引数の戻り値を受け入れる
- 3. VB.NET Invoke DLLメソッドby ByRef引数
- 4. カスタムロギングマクロが複数の引数を受け付けない
- 5. Ruby/Inline Cで未定義の引数を受け入れる
- 6. Cocoaで引数を受け入れてシステムコマンドを実行する
- 7. VB2010引数としてサブへのポインタを受け入れる
- 8. Javaで任意の数の引数を受け入れるメソッドを作る方法は?
- 9. 未知の引数を受け取るクラスのメソッド
- 10. Rubyスクリプトへのコマンドライン引数の受け入れ
- 11. 可変数の引数を受け入れるJavaメソッドを作成するには?
- 12. Python + SWIGで参照引数とポインタ引数を受け取る方法は?
- 13. 引数のある関数でのInvoke-Command -ScriptBlockの使用
- 14. イベントハンドラへの引数の受け渡し
- 15. クラスコンストラクタへの引数の受け渡し
- 16. Pythonic引数の受け渡し
- 17. バッチスクリプトサブルーチン:引数の受け渡し
- 18. java - mainメソッドへの引数の受け渡し
- 19. Webサービスで不特定の引数を受け入れる必要がある
- 20. JavaScriptでの匿名関数の引数の受け渡し
- 21. javascriptの複数の引数
- 22. のpgrep複数の引数
- 23. ブースト::複数の引数
- 24. マジックメソッド__callは、複数の引数
- 25. ProcessStartInfo複数の引数
- 26. エリキシル複数の引数は
- 27. Python3 tkinter複数の引数
- 28. テーブル値のパラメータを受け入れるストアドプロシージャのテーブル引数を生成する
- 29. 関数は静的関数ポインタを引数として受け入れることができますか?
- 30. 入れ子の引数RCurl
Varargsではこれを行うことができますが、メソッドの宣言を変更する必要があります。 http://softwareas.com/reflecting-on-varargs – seth