如何使用字符串的内容命名调用方法

时间:2013-11-28 23:28:55

标签: java android string android-listview

如何使用字符串的内容调用方法?我说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语句,我能不能让它自动启动以字符串命名的方法?

4 个答案:

答案 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?