有点像java / android中的动态函数

时间:2011-12-20 21:11:51

标签: java android

我从PHP到Java,我对“动态”功能有一些疑问。

有点像在php,你可以include(VARNAME.".php");,如果varname是a,如果a.php它包括x,它将包含x.php }。

我想用Java做但有功能。
有点像我有一个varname,我想要包含一个函数。因此,如果varname是Test,那么它将包含test(),但我有一堆函数,这是一件令人讨厌的事情

if(varname == "x"){ x(); }. 

有没有简单的方法呢?

2 个答案:

答案 0 :(得分:3)

首先,if(varname == "x")肯定不是你想要的。这是一个常见的Java错误,将检查对象标识,而不是对象值。你想要if(varname.equals("x"))

其次,这不是非常惯用的Java。正如Jason指出的那样,您可以使用反射来进行动态方法查找。但是,对于您要完成的任务,几乎可以肯定有更好的设计。

Java是一种与PHP完全不同的语言。尝试将PHP习惯用法应用于Java只会给你带来痛苦和痛苦。

说了这么多,我认为这大致就是你要找的代码:

Method method = this.class.getDeclaredMethod("x", new Class[] {});
method.invoke(this, new Object[] {});

答案 1 :(得分:1)

如果你的varname等同于你所在类的函数,理论上你可以使用反射来完成这个。有关详细信息,请参阅Sun / Oracle的this article