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

标签 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 header 是“application/json”,则返回 obj 的 JSON 表示形式,如果 Accept header 是“text/html”,则为已编译模板(在第一个参数中给出)。

最佳答案

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

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

关于java - 是否可以调用在 Java 方法中作为参数传递的 Scala 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17805699/

相关文章:

scala - 在 Scala 中创建一个接受任何 2D 序列并将其转换为 Array[Array[_]] 的方法

java - 为什么我的 ImageView 上的前景没有在背景上正确居中?

java - 如何递归遍历XPath?

java - 获取字符串的最后一个数字部分

scala - 显示 SBT 的内部类路径

scala - 为什么是 "avoid method overloading"?

java - @MessageMapping 不适用于 Spring Security 和 MVC

Java:用于更新不共享相同引用的所有相等对象(在相同上下文中)的模式

scala - 如何从 scala 导入 TwitterUtils 库

scala - 使用 deb 文件和 SBT 为生产设置日志记录/配置