小编ing*_*eer的帖子

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
Run Code Online (Sandbox Code Playgroud)

scala scala-generics

6
推荐指数
1
解决办法
2878
查看次数

标签 统计

scala ×1

scala-generics ×1