是否可以调用在Java方法中作为参数传递的scala方法?

时间:2013-07-23 08:58:13

标签: java scala

我正在通过Java项目使用Play框架,我想将我的模板(Scala函数)作为参数传递给我的一个Java方法。

我想做这样的事情:

public static Result ok(ScalaFunction template, Object obj) {
    // do some work, then :
    return ok(template.render(obj));
}

MyClass.ok(views.html.mytemplate, SomeModel.find.findList());

当然,这不起作用。我认为views.html.mytemplate是一个类,所以我在方法中切换到views.html.mytemplate.classpublic static Result ok(Class template, Object obj),但我无法在其上调用render

是否可以做这样的事情?

如果有人知道更好的替代方案,那么我想要实现的是,如果Accept标头是“ application / json ”,则返回obj的JSON表示,或者编译如果Accept标头是“ text / html ”,则模板(在第一个参数中给出)。

1 个答案:

答案 0 :(得分:4)

假设您的Scala函数接受并返回Object,因此类型为Function1<Object, Object>,那么您的Java方法应该如下所示:

public Result ok(Function1<Object, Object> template, Object obj) {
    // do some work, then:
    return ok(template.render(obj));
}