gpt4 book ai didi

斯卡拉: "No manifest available for type T"

转载 作者:行者123 更新时间:2023-12-03 20:28:44 27 4
gpt4 key购买 nike

我正在使用混合 Scala 和 Java 代码进行 Lift 项目。

在Java方面,我有以下相关项目:

interface IEntity

interface IDAO<T extends IEntity> {
void persist(T t);
}

在 Scala 方面,我有以下几点:
abstract class Binding[T <: IEntity] extends NgModel {
def unbind: T
}

class BasicService[E <: IEntity](serviceName: String, dataAccessObject: IDAO[E]) {
def render = renderIfNotAlreadyDefined(
angular.module("myapp.services")
.factory(serviceName,
jsObjFactory()
.jsonCall("persist", (binding: Binding[E]) => { //<---COMPILATION ERROR
try {
dataAccessObject.persist(binding.unbind)
Empty
} catch {
case e: Exception => Failure(e.getMessage)
}
})
)
)
}

这段代码不会编译。我在上面指出的点收到以下错误:
No Manifest available for Binding[E].

我根本不清楚为什么会发生这种情况,但我猜这与嵌套方法调用有关。如果我用 Binding[E] 作为参数声明一个成员函数,代码编译得很好,例如:
def someFunction(binding: Binding[E] = { // same code as above }

为什么会发生这种情况,我该如何解决?

最佳答案

事实证明,通过在构造函数或方法本身中隐式传递相关类型的 list ,这相对容易解决:

class BasicService[E <: IEntity](serviceName: String, dataAccessObject: IDAO[E])(implicit m: Manifest[Binding[E]]) {

或者
def render(implicit m: Manifest[Binding[E]])

关于斯卡拉: "No manifest available for type T",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25285865/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com