按变量值调用函数

时间:2016-10-18 14:14:00

标签: java scala playframework

所有都在标题中。 在php中我想要的例子:

function x($name){
 echo 'hello'.$name;
}

$var = "x";

$$var('Joe');

返回“Joe”

我认为这个问题已经有很多答案,但我找不到合适的单词拼写它,所以我的搜索查询毫无意义......

由于

编辑:我正在使用带有播放框架的scala,我想根据用户代理调用不同的模板。 在游戏中,我使用以下方法调用模板:

Ok(views.html.templateFileName(many args))

我搜索了一种方法:

Ok(views.html.<Template name based on user agent>(many args))

1 个答案:

答案 0 :(得分:1)

使用反射你可以这样做,但语法非常详细。

让我们声明一个名为Foo的类,并声明一个名为bar的方法,它接受一个I​​nteger参数并返回Integer

通常我们调用类似foo.bar(1)的方法,其中fooFoo类的对象引用。

现在,我们可以使用bar方法的名称来调用方法。

class Foo {
  def bar(x: Integer): Int = x * x
}

val result = classOf[Foo].getDeclaredMethod("bar", classOf[Integer]).invoke(new Foo, new Integer(1))

REPL输出

@ class Foo {
    def bar(x: Integer): Int = x * x
  }
defined class Foo
@
@ val result = classOf[Foo].getDeclaredMethod("bar", classOf[Integer]).invoke(new Foo, new Integer(1))
result: Object = 1