変数String func = "validate";
に格納されている汎用文字列を持っています。その名前の関数を呼び出したいとします。つまり、validate()
関数を呼び出す必要があります。
私はいくつかの機能
public void callFunc(String func){
....
}
そうに変数を渡します言うことを意味し、上記の機能はcallfunc()
にパラメータとして渡された関数名を持つ適切な関数を呼び出す必要があります。Java:文字列変数に名前が格納されている関数を呼び出す方法
答えて
あなたはです。あなたを想定しています
Method method = getClass().getMethod(func);
// TODO: Validation
method.invoke(this);
はもちろん、this
上のメソッドを呼び出したい、それがインスタンスメソッドだという。詳細はMethod
と一緒にClass.getMethod
と関連する方法をご覧ください。代わりにgetDeclaredMethod
が必要な場合があり、アクセス可能にする必要があります。
可能であれば、これを回避する方法を考えることができますか?反射は、すばやく面倒くなる傾向があります。一歩踏み出し、これが最高のデザインかどうか検討する価値があります。より大きな画像の詳細を私たちに伝えれば、代替案を提案することができます。
ありがとうlot ... .. –
'func(val1、val2)'関数にパラメータを渡したい場合 –
@ShamsUdDin:次に 'invoke(this、val1、val2)'を使います。私がリンクしたドキュメントを読んでください。 –
反射を使用する別の方法があります。
switch (func) {
case "validate": validate(); break;
case "apply": apply(); break;
default: break;
}
しかし、私はJonに同意します:これを避けるようにしてください。パターンマッチングを使用する場合は、変更を2回適用する必要があります。たとえば、別のメソッドを追加する場合は、関数の命名方法とパターンマッチングにそれを追加する必要があります。
私たちがスイッチ関数を使用すると、私たちのコードは一般的になりません。私は 'mypage()'という新しい関数を作成したとします。スイッチ機能のmypageケース。 –
それはまさに私が底で言ったことです。 –
- 1. 変数に名前が格納されている関数を呼び出すことはできますか?
- 2. 文字列に格納されたZEND実行/呼び出し関数
- 3. 名前が変数にあるjavascript関数を呼び出す
- 4. 変数に格納されているurlをjavascriptに呼び出す
- 5. 関数名を文字列として呼び出す
- 6. 文字列変数で関数名またはオブジェクト名を呼び出す方法はありますか? actionscript3
- 7. 同じ名前の文字変数でオブジェクトを呼び出す方法
- 8. 文字列からanonymus関数を呼び出す方法
- 9. 関数を呼び出してタプルに格納されたパラメータを渡すか?
- 10. 関数名を文字列として渡したときにネストされた関数を呼び出す
- 11. 名前が変数に格納されている場合、Pythonのモジュールレベルの関数にアクセスする
- 12. 文字列名の$(document).ready関数でjavacript関数を呼び出す
- 13. 文字列変数から来るパラメータでjava-script関数を呼び出す方法
- 14. 文字列変数に文字列変数を格納することはできますか? (Java)
- 15. 可変関数呼び出しの文字列を前に付加
- 16. P /呼び出された名前で関数を呼び出す
- 17. Perlでリテラル文字列に定義された関数名を呼び出す方法はありますか?
- 18. C++の文字列配列に変数を格納する方法
- 19. 文字列変数に格納されている要素を選択する方法は?
- 20. C++関数が正常に返されない:文字列デストラクタが呼び出されている
- 21. 出力変数がデータベースに格納されています
- 22. JavaでRのauto.Arima関数を呼び出す方法と予測の結果を格納する方法?
- 23. 関数名の文字列からのlua呼び出し関数
- 24. jQuery配列に格納された関数を呼び出すにはどうすればよいですか?
- 25. 要求がリダイレクトされる前に関数を呼び出す方法
- 26. Objective-Cの変数に格納されている文字列値を置き換える方法
- 27. eval()を使わずに文字列として格納された関数を実行する方法
- 28. 関数が呼び出されるたびに乱数を得る方法
- 29. メソッド名を変数に格納し、その変数を使用してそのメソッドを呼び出します。
- 30. 関数名を文字列として渡すことで任意の関数を動的に呼び出す
リフレクションの使用: –
一般的な例として、適切なJDBCドライバをClass.forName()でロードしています。http://www.xyzws.com/Javafaq/what-does-classforname-method-do/17 – paulsm4