0
*/
class Parent
class Child extends Parent
class GrandChild extends Child
object main{
def test[B >: Child](x : B) = x; // B should be of type Child or Parent
def main(args: Array[String]): Unit = {
test(new Parent); //works. B == Parent
test(new Child); //works. B == Child
test (new GrandChild) // works!!! Surprise!!! B == GrandParent. This should not work, right?
}
}
我在期待那個測試(新的GrandChild)應該給編譯錯誤。它是如何工作的?我是否理解錯誤的類型?混淆上限類型綁定和下限類型
如果B>:小孩表示B應該是超類型Child,則 測試(新GrandChild)應該失敗,因爲GrandChild不是超類型的Child。它應該是一個編譯錯誤 – amol
新的Child和新的GrandChild是Parent的實例,在這裏向上執行upcast – grotrianster