是否可以调用在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.class和公共静态结果ok(Class template,Object obj),但是我无法在其上调用render.

可以做这样的事情吗?

如果有人知道更好的选择,那么我要实现的目标是:如果Accept标头为“ application / json”,则返回obj的JSON表示形式;如果Accept标头为“ 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));
}

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...