我有下面的代碼片段,這工作正常。不應該拋出編譯時錯誤,因爲我已經將c
定義爲ArrayList
,它將包含String
對象,但我添加了Integer
對象。那麼爲什麼它不會拋出編譯時間/運行時錯誤?用泛型聲明的這個集合沒有錯誤?
Collection c = new ArrayList<String>();
c.add(123);
我知道下面會拋出編譯時錯誤,但爲什麼不在上面。這兩個代碼片段之間的邏輯區別是什麼?
Collection<String>() c = new ArrayList();
c.add(123);
第一個應該給''rawtypes''警告。注意編譯器。保持你的代碼免費是個好主意。 –