Ich habe versucht, eine Funktion mit einem generischen Rückgabetyp zu schreiben, aber es funktioniert nicht, wenn ich den Rückgabetyp umwandelt. Bitte beachten Sie die Funktion getSomething()
unten Ich erwartete, dass es ohne das Gießen funktioniert. Was könnte ich hier falsch machen?scala generische Funktion Rückgabetyp
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