相关疑难解决方法(0)

在Scala中使用存在类型时,为什么忽略类型参数的边界?

我的意思是:

scala> class Bounded[T <: String](val t: T)
defined class Bounded

scala> val b: Bounded[_] = new Bounded("some string")
b: Bounded[_] = Bounded@2b0a141e

scala> b.t
res0: Any = some string
Run Code Online (Sandbox Code Playgroud)

为什么res0的类型是Any而不是String?它肯定知道bt至少是一个String.写作

val b: Bounded[_ <: String] = new Bounded("some string")
Run Code Online (Sandbox Code Playgroud)

有效,但对于类本身的声明而言是多余的.

scala type-inference bounded-types type-parameter

3
推荐指数
1
解决办法
464
查看次数