2012-06-19 49 views
0
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; 

我该怎么做?

+0

也许你能更多详细信息添加到你想要什么去做。这样,我们可以建议一些更友好的方法。 – Morfic

+0

你只是想要你打电话给一个字符串指定的方法? –

回答

2

你可以监听中心做

Resources.ICONS.getClass().getMethod("lock").invoke(Resources.ICONS); 

如果图标是一个对象。如果它是一类,它可能是

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

(未经测试)。

我希望你知道你在做什么,因为这可能有一些你不想要的效果。

+0

我不知道有多少令人头疼的人不得不编写代码来为Java添加反射,他们正在编写代码时考虑了他们必须如何使它与Java一起工作,这是多么令人费解...... – JAB

1

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

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

==为字符串比较不会有预期的结果... –

+0

或任何语法会。我混淆了所有的语言哈哈。所以,无论字符串比较的平等运算符是否为java。 – Eric

+2

@Spaeth实际上你可能会因为在java(flyweight&co。)中实现String的方式而得到幸运,也就是说,如果你没有像new String(“lock()”)这样的调用。然而,你是对的,因为String是一个你想用'.equals'来验证相等性的对象。 +1 – Morfic

1

如果你想获得某种形式的一个对象,你会需要后调用的,你应该看看command pattern

相关问题