我定义了以下类:
文件:PyRef.scala:
package mypackage
class PyBinding() {
...
}
trait PyRef {
type Binding = PyBinding
}
文件:Link.scala:
class Link() extends PyRef {
override type Binding = Link.PyBindingImpl
}
object Link {
class PyBindingImpl() extends PyRef#Binding() {
}
}
在编译中,抛出了以下错误:
Error:(222, 34) class type required but mypackage.PyBinding found
) extends PyRef#Binding() {
为什么会发生这种情况,我该怎么做才能绕过它呢?我使用的是Scala 2.10。
答案 0 :(得分:0)
我不认为您可以在Scala中使用类型投影A#B
作为可实例化的类类型。以下两件事有效
trait Link {
class PyBindingImpl() extends PyBinding()
}
trait Link {
val ref: PyRef
class PyBindingImpl() extends ref.Binding()
}