相关疑难解决方法(0)

Map.get(Object key)不是(完全)泛型的原因是什么

什么是决定不具有的接口完全通用的get方法背后的原因java.util.Map<K, V>.

为了澄清这个问题,方法的签名是

V get(Object key)

代替

V get(K key)

我想知道为什么(同样的事情remove, containsKey, containsValue).

java generics collections map

395
推荐指数
8
解决办法
5万
查看次数

为什么我们有包含(Object o)而不是contains(E e)?

它是否与旧的(非泛化)版本保持向后兼容Collection?还是有一个我错过的更细微的细节?我看到这个模式在removealso(remove(Object o))中重复,但是add被泛化为add(E e).

java generics collections contains

17
推荐指数
2
解决办法
1647
查看次数

列表包含不安全的方法

虽然经历了这个问题:" 如果一个对象包含一个链表内检查 ",我发现用户正试图通过一个字符串参数到包含类型链表的链表的方法:

    LinkedList<LinkedList> list = new LinkedList<LinkedList>();

    list.contains("String");
Run Code Online (Sandbox Code Playgroud)

这不会引发任何编译错误,因为'contains'方法接受java.lang.Object并允许向其传递字符串值.

所以,只是出于好奇,我想知道为什么这种方法选择接受"对象",当它可能已被限制为仅接受列表类型(就像添加).是不是打败了泛型的整个目的,即"在编译时更强的类型检查"?

java generics

15
推荐指数
2
解决办法
1497
查看次数

标签 统计

generics ×3

java ×3

collections ×2

contains ×1

map ×1