什么是决定不具有的接口完全通用的get方法背后的原因java.util.Map<K, V>.
为了澄清这个问题,方法的签名是
V get(Object key)
代替
V get(K key)
我想知道为什么(同样的事情remove, containsKey, containsValue).
在Scala中,a Set是一个函数:
trait Set[A] extends (A => Boolean)
Run Code Online (Sandbox Code Playgroud)
这使得不可能具有协变不可变Set因为类型A发生在逆变位置.相反Seq,未定义为函数.关于为什么以这种方式设计集合和序列的问题已经有一些内容:
一个答案说,其原因是数学背景.但这个答案没有多解释.那么,定义一个Set函数的具体优势是什么?如果以不同的方式实现它会有什么缺点?