下面的語句:爲什麼不能分配I <?將Type>擴展爲<Type>?
URLClassLoader ucl = (URLClassLoader) ClassLoader.getSystemClassLoader();
Class<URLClassLoader> uclc = ucl.getClass();
失敗,錯誤:
Type mismatch: cannot convert from Class<capture#2-of ? extends URLClassLoader> to Class<URLClassLoader>
爲什麼我需要打石膏,在這裏?
我發現了幾篇文章,解釋了爲什麼你不能做相反的事情(把T分配給a),但這是(明顯的)和理解的。
注:我在月食Luna下編碼,所以我不知道它是否是Luna Quirk,或者是否有我在泛型中不瞭解的東西。
你能eloborate爲什麼'類 extends T>'(或'類>')不是'類'亞型?我覺得是這樣的。 –
skiwi
@swiki:嘗試從收藏角度思考。你認爲List <?擴展Number>應該可以分配到列表?這將導致類型安全問題並且不被允許。雖然允許相反的分配。 –
閱讀此奇妙的解釋:http://www.angelikalanger.com/GenericsFAQ/FAQSections/TechnicalDetails.html#FAQ503 –