**私はこれを見てきました:文字列配列(JavaまたはGroovy)から関数を呼び出しますが、うまくいきませんでした。おそらくそれは私のシナリオです*
いくつかの値を持つ文字列配列があり、それらの値の 1 つであるメソッドを呼び出せるようにしたいのですが、もちろんこれは変更される可能性があり、数百の値を持つ可能性があるため、if/ を使用することは現実的ではありません。 else if コンストラクト、または switch ステートメント。
以下のコードに表示されているように、私が望むようにメソッドを呼び出す方法はありますか?
private String[] = {"Hit","Slap","Blop"};
private String et = "Slap";
public void Action(){
for(int i = 0; i < arr.length;i++){
if(et.equals(arr[i])){
//Call method of that name ( Slap(); )
}
}
}
public void Run(){
///
}
public void Slap(){
///
}
public void Blop(){
///
}
編集:反射を統合する私の試み:
for(int i = 0; i < arr.length;i++){
if(et.equals(arr[i])){
//Call method of that name
try {
method = this.getClass().getMethod(arr[i]);
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
return (String) method.invoke(this);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return "FAIL";