тип возвращаемой обобщенной функции scala
Я пытался написать функцию с универсальным типом возвращаемого значения, но он не работает, если я не приведу тип возвращаемого значения. Пожалуйста, смотрите функциюgetSomething()
ниже я ожидал, что это будет работать без кастинга. Что я могу здесь делать не так?
trait Sup
class Sub extends Sup {
def getString = "I am Sub"
}
class Sub2 extends Sup {
def getInt = 100
}
def getSomething[A <: Sup](str: String) : A = {
str match {
case "sub" => getSub.asInstanceOf[A]
case "sub2" => getSub2.asInstanceOf[A]
}
}
def getSub(): Sub = {
new Sub
}
def getSub2() : Sub2 = {
new Sub2
}
val x = getSomething[Sub]("sub").getString
val y = getSomething[Sub2]("sub2").getInt