如何从String返回一个方法?

时间:2012-06-19 20:05:40

标签: java string reflection

public AbstractImagePrototype getIcon(ModelData model) {
    if (model.get("icon") != null) {
        return Resources.ICONS.lock();
    } else {
        return null;
    }
}   

在这行代码中:

return Resources.ICONS.lock();

我需要为字符串更改lock(),例如

String text = "lock()";
return Resources.ICONS.text;

我该怎么做?

3 个答案:

答案 0 :(得分:2)

你可以做到

Resources.ICONS.getClass().getMethod("lock").invoke(Resources.ICONS);
如果ICONS是一个对象,那么就处于领先地位。如果它是一个类,它可能是

Resources.ICONS.class.getMethod("lock").invoke(null);

(未测试的)。

我希望你知道你在做什么,因为那可能会产生许多你不想要的效果。

答案 1 :(得分:1)

我建议使用一个接受字符串作为输入的方法。然后它会比较字符串,然后调用函数。

if (command.equals("lock()"))
    lock();
// etc.

答案 2 :(得分:1)

如果您尝试获取稍后需要调用的某种对象,则应该查看command pattern