2
可能重复:
How do I setup multiple type bounds in Scala?在Scala中有两个上限?
我对Scala的类型系统有点卡住了。我有类似这样的类型:
// ==== BASE CLASS
class Attribute {
def name(): String
def defaultVal(): Any
}
// ==== TRAIT - defines data type of an attribute
trait AttributeDataType[T] {
def defaultVal(): T
}
trait TextAttr extends AttributeDataType[String] {
def defaultVal() = ""
}
trait NumAttr extends AttributeDataType[Double] {
def defaultVal() = 0.0
}
// ==== CONCRETE ATTRIBUTES
class AgeAttribute extends Attribute with NumAttr {
def name() = "Age"
}
class ColorAttribute extends Attribute with TextAttr {
def name() = "Color"
}
而现在这应该工作:
object Main {
def main(args:Array[String]) {
Main.workOnNumAttr(new AgeAttribute) // SHOULD COMPILE
//Main.workOnNumAttr(new ColorAttribute) // SHOULD NOT COMPILE
}
def workOnNumAttr[T <: [???] (attr: T) { // requires Attribute AND NumAttr
println (attr.name)
println (attr.defaultVal)
}
}
我该怎么办呢?
PS:基类和特质需要保持独立
这是http://stackoverflow.com/questions/1491283 – 2011-03-07 11:01:32
的副本很酷 - 谢谢。 – stephanos 2011-03-07 12:01:49