変数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. 名前が文字ベクトルに格納されたdata.table変数を持つ関数
- 3. Pythonで格納された文字列から関数を呼び出す
- 4. 文字列に格納されたZEND実行/呼び出し関数
- 5. 文字列に格納された名前で変数にアクセスするには?
- 6. Java:呼び出す配列と名前の配列は、配列や変数の異なる文字列に格納されます。
- 7. Javaの文字列名に基づいて関数を呼び出す
- 8. 名前が文字列に保存されているJavaScript関数を呼び出す
- 9. 名前が変数にあるjavascript関数を呼び出す
- 10. 関数内に文字列を格納する変数を出力する - Python
- 11. 変数に格納されているurlをjavascriptに呼び出す
- 12. 辞書値として格納されている関数を呼び出す
- 13. Pythonの文字列を変数に格納する方法は?
- 14. 文字列変換への配列 - 変数の関数名の呼び出し
- 15. 関数が呼び出されるたびに配列内にjQueryを格納しないでください
- 16. 関数名を文字列として呼び出す
- 17. 変数に関数名を格納してjs内の関数を呼び出す
- 18. JNDをVB.netに呼び出す方法ByRef文字列関数
- 19. 名前が変数に格納されて
- 20. 関数呼び出しを文字列に変換する
- 21. 変数に格納されたXML文字列に変数を追加する
- 22. 同じ名前の文字変数でオブジェクトを呼び出す方法
- 23. 文字列変数で関数名またはオブジェクト名を呼び出す方法はありますか? actionscript3
- 24. 文字列に格納された文字 - ランダム化されたときに別の文字列変数に格納する方法
- 25. 文字列からanonymus関数を呼び出す方法
- 26. 関数を呼び出してタプルに格納されたパラメータを渡すか?
- 27. 変数にdatagridviewの名前を格納する方法#
- 28. すべての画像がローカルストレージに格納された後に関数を呼び出す方法
- 29. 関数名を文字列として渡したときにネストされた関数を呼び出す
- 30. Windowオブジェクトの文字列名から関数を呼び出す
リフレクションの使用: –
一般的な例として、適切なJDBCドライバをClass.forName()でロードしています。http://www.xyzws.com/Javafaq/what-does-classforname-method-do/17 – paulsm4