1
Map map = new HashMap();
2
map.clone();

2

Map是一個接口,HashMap是一個類。clone()方法在Object類中定義,因此我下意識認為第二行可以這么寫。結果編譯器報錯:clone()方法未定義。這個錯誤讓我很郁悶,看了半天doc才發(fā)祥原來Map是一個接口,而接口和Object類沒有任何關系,所以Map也就沒有繼承clone()。于是把代碼改成下面的樣子:
1
HashMap map = new HashMap();
2
map.clone();

2

這樣就可以了。
兄弟,你這樣是測試不出來的。java是絕對多態(tài)的。
Map map = new HashMap();
map.clone()調用相當于HashMap.clone()也就是說調用的是從HashMap中的clone方法。但是你沒有看清楚object的文檔,class要顯式implements Clonable接口才可以調用clone方法的