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

可以调用在Java方法中作为参数传递的scala方法吗?,java,scala,Java,Scala,我正在通过一个Java项目使用Play framework,我想将我的模板(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.

我正在通过一个Java项目使用Play framework,我想将我的模板(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.class
公共静态结果ok(类模板,对象obj)
在我的方法中,但我不能调用
render

有可能这样做吗


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

假设您的
Scala
函数接受并返回一个
对象,因此,如果类型为
Function1
,那么您的Java方法应该如下所示:

public Result ok(Function1<Object, Object> template, Object obj) {
    // do some work, then:
    return ok(template.render(obj));
}
公共结果正常(功能1模板,对象obj){
//做一些工作,然后:
返回ok(template.render(obj));
}

try template.apply(obj)感谢您的建议,但是对于
Class template
参数没有
apply
方法如果您的
template
是真正的Scala函数,您可以执行类似于
public static Result ok(Scala.Function1[RenderedTemplate,Result]template,Object obj)的操作
。Scala的函数表示为
函数n
的实例。我显然找不到RenderedTemplate,您确定名称吗?