У меня есть три класса, которые реализуют функции аналогов, но отличаются тонкой детализацией. Я хотел создать абстрактный базовый класс и переместить общий код. Теперь я застрял.Covariance/SubType в ListBuffer [BaseType]
В каждом подклассе есть ListBuffer
, который содержит объекты другого отношения, то есть подкласс некоторых базовых типов. Более конкретно:
trait data {
def parseXML();
}
trait ConcreteDataA extends Data {
override def parseXML(): Unit = {...}
}
abstract class Worker {
protected var data: ListBuffer[Data] = _
def loadXML(): Unit = {
val path: String = getPath()
... // Parse XML-file at path and put data into data-ListBuffer
}
def getPath(): String;
}
object ConcreteWorkerA extends Worker {
data = new ListBuffer[ConcreteDataA] // Here the expected type differs
override def getPath(): String = {
return "pathTo/ConcreteWorkerA/s/WorkingPlace"
}
}
Я не уверен, как лучше решить эту проблему и благодарны за любой вклад