тип возвращаемой обобщенной функции 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

Ответы на вопрос(2)

Ваш ответ на вопрос