当前位置: 首页 > 面试题库 >

为什么Java的TreeSet remove(Object)不取E

商正诚
2023-03-14
问题内容

从Java 6
TreeSet<E>文档中:

boolean remove(Object o):
    Removes the specified element from this set if it is present.

为什么它接受对象而不是通用类型E?唯一可以添加的对象是类型E,因此,唯一的可移动类型应该是类型E。


问题答案:

remove()get()如果给定 相等的
元素(根据.equals()),则需要工作。在Java中,不同类的对象可能相等(在某些情况下是必需的)。因此,您不应限制类型。



 类似资料:
  • 问题内容: 我想知道为什么它是Java不允许超负荷使用,虽然他们都以不同的方式使用? 使用方式如下: 而另一种形式: 使用方式如下: 这背后有什么原因吗? 问题答案: 这个15.12.2.5选择最具体的方法对此进行了讨论,但是它相当复杂。例如,在Foo(数字…整数)和Foo(整数…整数)之间进行选择 为了向后兼容,这些实际上是同一件事。 例如,您可以将main()定义为 一种使它们与众不同的方法是

  • Eclipse给了我一个警告,说类型中的方法已被弃用。我正在使用JUnit4。 我在Eclipse中编写了以下代码: 有人能告诉我为什么不推荐这个方法,或者我应该用什么方法来代替吗?

  • 问题内容: 来自的javadoc : 返回此Calendar是否代表指定Object所表示的时间之前的时间。此方法等效于: 当且仅当when是Calendar实例。否则,该方法返回false。 如果有人传递的不是Calendar实例的东西返回false,为什么它接受一个Object?为什么不只接受Calendar实例呢?这使我在相当长一段时间内一直在监视功能的不正确结果。 问题答案: 我认为没有特

  • 问题内容: [object Object]是JavaScript Object的默认字符串表示形式。 我会知道这是正义还是正义,但是为什么呢?为什么第一个单词是小写而第二个单词是大写?它是JSON还是JavaScript的一部分? 问题答案: 所有对象都有一个以格式显示内容的方法,其中type是对象类型。 当您在get上调用该对象时,并且在一个对象上调用该字符串时,您会得到该字符串,因为它基于Ob

  • 问题内容: 什么是决定不具有的接口完全通用的get方法背后的原因。 为了澄清这个问题,方法的签名是 代替 我想知道为什么(与相同)。 问题答案: 正如其他人所提到的,之类的原因不是通用的,因为你要检索的条目的键不必与你传递给的对象的类型相同;方法的规范仅要求它们相等。这从方法如何将对象作为参数(而不仅仅是与对象相同的类型)中得出。 尽管通常已经定义了许多类,以便其对象只能等于其自己的类的对象,这确

  • 问题内容: 我试图为对象类型分配一个lambda: 它给我一个错误的说法: 为什么会这样,怎么做? 问题答案: 这是不可能的。根据错误消息不是功能接口,即具有单个公共方法的接口,因此您需要使用引用类型,例如