![](/img/trans.png)
[英]How can I guarantee that a class that implements an interface also extends a class?
[英]Does class B that implements interface I that extends interface J also extends type I?
代碼讓我感到困惑:
Collection<? extends Map<String, String>> a =
new ArrayList<SortedMap<String, String>>();
SortedMap<String, String> b = new TreeMap<String, String>();
b.put("1","a");
錯誤:
a.add(b);
類型Collection>中的方法add(capture#2-of擴展Map)不適用於參數(SortedMap)為什么? SortedMap擴展了Map,而TreeMap是實現SortedMap的類。
這意味着
Collection<? extends Map<String, String>> a ;
的元件a
是延伸一個地圖不明類別。 您的意思是,當您從中獲得一個值時,它就是一個Map,但是您不能說哪一個地圖可以有效地添加到集合中。
例如, a
不知道擴展Map的類,因此它不允許任何子類,因為它不知道哪個有效。
List<HashMap<String, String>> listOfMap = new ArrayList<>();
Collection<? extends Map<String, String>> a = listOfMap;
SortedMap<String, String> b = new TreeMap<String, String>();
b.put("1", "a");
a.add(b); // produces an error as it should.
如果將a
更改為
Collection<SortedMap<String, String>> a = new ArrayList<SortedMap<String, String>>();
可以添加b
因為它是這種類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.