有没有办法让List [“只有DataElement的子类”]或List [“只有trait Element”]?
我认为它可能就像这样
val test: List[_ <: DataElement] = List(DataElement("hi"), DataMessage("ho"))
DataMessage extends DataElement
但是我得到了这个错误
type mismatch; found : DataMessage.type required: DataElement
答案 0 :(得分:1)
你有点过分复杂了。你可以这样做:
val test: List[DataElement] = List(DataElement("hi"), DataMessage("ho"))
答案 1 :(得分:0)
适合我:
trait Element
class DataElement(s: String) extends Element
class DataMessage(s: String) extends DataElement(s)
val test: List[_ <: DataElement] = List(new DataElement("hi"), new DataMessage("ho"))
println(test) // List(Test$DataElement$1@13c695a6, Test$DataMessage$1@17386918)
但您不需要_ <:
语法。这些更好:
val test: List[DataElement] = List(new DataElement("hi"), new DataMessage("ho"))
val test: List[Element] = List(new DataElement("hi"), new DataMessage("ho"))