如何使用字符串的内容调用方法?我说4个字符串:
swimming
football
rugby
hockey
我还有4种方法叫做:
swimming
football
rugby
hockey
我有一个listview,这些字符串填充了listview(这只是一个例子,我实际上有一个包含200个字符串的listview)所以对于200个字符串,而不是写一个if语句:
if(string.equals("Swimming")){swimming();}
我可以做到某种程度上我可以使用一个onclick方法,当点击listview中的项目时,它会运行如下:
[string]();
其中[string]是获取从listview
中选择的字符串的代码基本上是为了保存自己写200个if语句,我能不能让它自动启动以字符串命名的方法?
答案 0 :(得分:3)
修正了错误处理:
try
{
String string = "swimming";
MyActivity.class.getMethod(string, null).invoke(this, null);
}
catch(Throwable t)
{
t.printStackTrace(); // might want to do something else here
}
答案 1 :(得分:1)
使用反射。
String type = "swimming";
Method m = this.getClass().getDeclaredMethod(type, null);
m.invoke(this, null);
答案 2 :(得分:0)
您需要使用反射才能执行此操作。而不是键入一个完整的示例this SO帖子和接受的答案具有实现此目的所需的所有细节。请注意,使用反射会产生开销,而在移动设备上,成本会更高。如果您可以分享有关您尝试执行的操作的更多详细信息,则可能会为您要解决的更大问题提供更优雅的解决方案。
答案 3 :(得分:0)
你可以用反射来做。 有关详细信息,请查看此帖子:How do I invoke a Java method when given the method name as a string?