Мне нужно получить производные объекты класса, хранящиеся на карте, с указанием имени соответствующего класса в качестве ключа.
Как показано ниже
trait Caluclator
class PreScoreCalculator(data:Seq[Int]) extends Caluclator
class BenchMarkCalculator(data:Seq[Int]) extends Caluclator
val calculatorsLookUp:Map[String, Calculator] = Map[String, Calculator](
"PreScore" -> new PreScoreCalculator,
"BenchMark" -> new BenchMarkCalculator
)
Учитывая имя ключа, мне нужно получить соответствующий объект / экземпляр с карты
def getCalculatorByOperationName(operation:String) : Option[ Calculator] = {
calculatorsLookUp.get(operation)
}
Я звоню, как показано ниже
val calcName = "PreScore"
val opt = getCalculatorByOperationName(calcName)
if(opt.isInstanceOf[PreScoreCalculator] ) /// this is coming as false
calculationController.calculate(opt) // this is not being executed.
Ожидайте:
Выполнить вычисленияController.calculate (opt)
Ошибка:
Выше, если условие ложно, следовательно, не выполняется.
Так, как справиться с этой проблемой?
Как работать с объектами конструктора по умолчанию?
class PreScoreCalculator(data:Seq[Int]) extends Caluclator