Scala “为什么我能”<;:&引用;在类型类声明上,但无法使用<;:<&引用;

Scala “为什么我能”<;:&引用;在类型类声明上,但无法使用<;:<&引用;,scala,Scala,以下代码编译成功,但第二个代码无法编译。据我所知,这两个符号都表示类型约束 class Hello[T <: String](t:T) class Hello[T <:< String](t:T) 同学你好[T他们有点不同。你能详细解释一下吗?我知道也许这会更清楚 class Hello[T <: String](t:T) class Hello[T](t: T <:< String) class Hello[T](t: <:<[T, St

以下代码编译成功,但第二个代码无法编译。据我所知,这两个符号都表示类型约束

class Hello[T <: String](t:T)

class Hello[T <:< String](t:T)

同学你好[T他们有点不同。
你能详细解释一下吗?我知道也许这会更清楚
class Hello[T <: String](t:T)

class Hello[T](t: T <:< String)
class Hello[T](t: <:<[T, String])
def foo[A,B](a: A, b: B)(implicit ev: A <:< B) = "yay"

scala> foo(Nil, List(1,2,3))
res13: java.lang.String = yay

scala> foo(List(1,2,3), Nil)
<console>:9: error: Cannot prove that List[Int] <:< scala.collection.immutable.Nil.type.
              foo(List(1,2,3), Nil)
                 ^