3 回答

TA貢獻1796條經(jīng)驗 獲得超7個贊
String是一個Object,但是List<String>卻不是一個List<Object>。即String是Object的子類,但是List<String>卻不是List<Object>的子類。List<String>和List<Object>都是List,沒有繼承關系,但是其限定的容器中可裝的內(nèi)容的類型不一致。故兩者類型不匹配

TA貢獻1796條經(jīng)驗 獲得超4個贊
public Object [] initData() {
String [] dd = new String [10];
return dd;
}
換成數(shù)組就不報錯,

TA貢獻1852條經(jīng)驗 獲得超1個贊
方法 1 List<Object> initData() {...} 方法 2 Object tt(){...}
就Java 語言而言,所有的類都隱式繼承 Object,即 Object 類位于繼承樹最頂層,是所有其它類的基(父)類。
泛型的本質(zhì)是參數(shù)化類型,也就是說所操作的數(shù)據(jù)類型被指定為一個參數(shù)。
方法 1 規(guī)定調(diào)用此方法將返回一個List ,其元素類型是 Object 。換句話說,返回的 List 之中的元素類型,可以是 Object,或 Object 的子類,即 可以是Java任何一個類的對象(實體)。
可是,此方法的代碼,創(chuàng)建了一個 元素類型僅限于String(字符串)類型的List。
一種是元素類型可以是任意一種JAVA類的實體的 List (不限類型),一種是 元素類型僅限于String(字符串)類型的 List。兩種List的類型當然不一樣,故報錯。
任何Java 子類的對象,都(可當作)是父類的對象。
比如,Student extends Person, 那麼,任何一個具體的學生,當然都是人(Person)。
方法 2 規(guī)定調(diào)用后返回 Object 類。
實際返回了一個字符串對象。字符串對象,當然就是一個 Object 類的對象。因此,方法 2 沒錯
添加回答
舉報