天天看點

java父類轉子類_Java自學-泛型 泛型轉型

Java 中的子類泛型轉型成父類泛型

步驟 1 :

對象轉型

根據面向對象學習的知識,子類轉父類 是一定可以成功的

package 
           

步驟 2 :

子類泛型轉父類泛型

既然 子類對象 轉 父類對象是可以成功的,那麼子類泛型轉父類泛型能成功嗎?

如代碼

hs的泛型是父類Hero

adhs 的泛型是子類ADHero

那麼 把adhs轉換為hs能成功嗎?

package 
           

步驟 3 :

假設可以轉型成功

假設可以轉型成功

引用hs指向了ADHero泛型的容器

作為Hero泛型的引用hs, 看上去是可以往裡面加一個APHero的。

但是hs這個引用,實際上是指向的一個ADHero泛型的容器

如果能加進去,就變成了ADHero泛型的容器裡放進了APHero,這就沖突了

是以子類泛型

不可以

轉換為父類泛型

java父類轉子類_Java自學-泛型 泛型轉型
package 
           
練習

: 父類泛型能否轉換為子類泛型?

上面使用反證法分析了,子類泛型不能轉換為父類泛型。

那麼父類泛型又能否轉換成子類泛型? 為什麼?

package 
           
答案

假設能成功

這個時候adhs實際上指向的是泛型是Hero的容器,而這個容器裡可能放的是一個APHero

而根據泛型,直接取出來就轉型成了ADHero

是以就變成了APHero轉型成ADHero,這是沖突的。

是以反推,父類泛型不能轉型為子類泛型

package