下面的類型T
是Fruit
的子類型。 Apple
也是Fruit
的子類型。那麼,爲什麼在下面使用類型歸屬時,編譯器不會將Apple強制轉換爲T.爲什麼我們需要一個明確的演員才能使其工作?推斷類型時,強制規則是什麼?子類型和類型強制
trait Fruit
case class Apple(id: String) extends Fruit
type T <: Fruit
val t: T = Apple("apple") // why doesn't the compiler coerce Apple to T?
val t: T = Apple("apple").asInstanceOf[T] // works!
所以,「Pear <:胎兒」意味着Pear是'胎兒的**特定**亞型和**特定**亞型不是'Apple'?但是,爲什麼'梨'不能成爲'蘋果'?所有編譯器都知道'Pear'是'Fetus'的子類型。它可以或不可以是Apple。 – Samar
我更新了答案 –
感謝您的回答,現在有道理。 – Samar