- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我构建了一个 TreeMultimap
并想要添加我的 Wedge
类的实例。但它拒绝添加超过一项。我有点茫然,因为我实现了 equals 和 hashCode。似乎更奇怪的是,当我调用调试器中的方法来检查是否没有犯错误时,不同对象上的这些方法返回不同的值。因此,包含检查返回 true 似乎很奇怪。这里有一些代码:
@NonNullByDefault
public class Wedge extends Corona
{
/** Field of the description to display for the wedge. */
private String description;
//Fields and other unrelated methods.
/**
* {@inheritDoc}<br><br>
* Method for determining if both coronas are equal.
* Returns true if both share the same description.
*/
@Override
public boolean equals(@Nullable Object object)
{
if(object == null) return false;
if(object == this) return true;
if(object instanceof Wedge)
{
return description.equals(((Wedge) object).description);
}
return false;
}
/**
* {@inheritDoc}<br><br>
* Method for determining the hash code based on the description.
*/
@Override
public int hashCode()
{
return description.hashCode();
}
}
代码使用或多或少,简化代码如下:
/** The visual components to display as part of the widget. It's background. */
public Multimap<Integer, Corona> coronas = TreeMultimap.create();
// More interesting fields and methods.
/**
* Method for adding a corona to a given handle.
* @param handleID
* The identifier of the handle for which to add the corona.
* @param corona
* The corona to display on the handle.
* @return
* An instance of the builder for chain calling.
*/
@SuppressWarnings("unchecked")
public B withCorona(int handleID, Corona corona)
{
coronas.put(handleID, corona);
return (B) this;
}
代码是构建器对象的一部分。请原谅泛型。 handleID
是我用来绑定(bind) corona 实例的 key 。它的行为符合预期。 corona
变量包含不同的 corona 实例,因为在循环中调用该方法来添加所有 Corona
实例。
现在,一旦我添加第一个 Wedge
测试,例如 coronas.containsValue(corona)
,即使我构建了一个新的 Wedge
,也会返回 true > 实例并将其传递给方法。如前所述,使用 corona.equals(coronaInTheMap) 或 corona.hashCode() == hashCodeOfCoronaInMap 的测试返回不同的值。
描述在构造函数中设置并且从未修改!
我已经搜索了错误,但被踩了。我需要你的帮助!
最佳答案
TreeMultimap
使用 Comparable
而不是 equals
和 hashCode
。来自 JavaDoc:
Implementation of Multimap whose keys and values are ordered by their natural ordering or by supplied comparators. In all cases, this implementation uses Comparable.compareTo(T) or Comparator.compare(T, T) instead of Object.equals(java.lang.Object) to determine equivalence of instances.
关于java - 尽管 equals() 和 hashCode() 返回不同的值,Multimap 仍然在 containsValue() 上找到实例。怎么可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22092237/
每次我尝试构建(执行完整的 Clean,然后构建)时,我都会在 Eclipse 的问题部分下弹出此错误消息。项目本身旁边还显示一个错误。 我已经尝试了同一问题的其他解决方案中包含的所有内容: 删除项目
我收到以下错误(注意:我使用的是 Netbeans): java.sql.SQLException: No suitable driver found for jdbc:derby://localho
例如 //somewhere struct IFace; struct Base { Base(IFace* iface): f(iface) { //wi
我试图通过 stringstream 将 double 变成字符串,但它不起作用。 std::string MatlabPlotter::getTimeVector( unsigned int xve
我正在尝试使用 AudioKit 框架中的音序器播放音频文件。 AudioKit.output = sampler AudioKit.start() sampler.enableMID
昨天我问了一个关于插入 Heroku 的问题。它不工作,然后突然开始工作。我什么都没改变。现在在一个新的应用程序上,我遇到了完全相同的问题。我决定包含我的整个 Gemfile,希望我可以继续没有这种令
我知道,这个topic已经是discussed许多times,所以直截了当。 这是ItemsSource的TabControl: Tabs = new ObservableCollection {
我有一个更新对象的函数,问题是当我从更新表单字段返回到详细 View 时,它初始化旧对象而不是更新后的对象。 我想在 CarService 而不是 app.js 中填充汽车列表 这是我的汽车服务:
在 resolution comments错误报告 12266 (“套接字连接错误导致资源泄漏”),Robert Ehteshamzadeh 写道 TClientSocket is deprecate
我最初发布了一个问题 here 我发现 JTextField 仅在 JScrollPane 存在时才调整大小。换句话说,我可以根据需要最小化和最大化它,直到出现滚动条(因为文本太多,无法放入窗口)。之
我读过关于 postion:absolute 的问题并尝试了几乎所有可能的解决方案。包括相对定位 div,将它们包装在相对定位的父级中等等,但它没有帮助。 我正在绘制一个表格,然后我将 div 放入其
我在这里发起了一个话题document.getElementById not working但看起来即使提出的建议都是有效的,我仍然有问题。 我有几个复选框。当我在这里查看页面源代码时,有。 docu
我正在做一些阅读,试图更好地理解按位运算符,然后偶然发现了 a helpful old blog post from 2012 ,其中指出 - 在随机正整数 x 的奇数测试中 - 在作者的计算机上评估
我正在尝试在 Eclipse Neon 中使用 aspectj 创建一个示例 maven 项目。然而,方面并没有编织/工作(参见下面的输出)。我尝试寻找很多原因和解决方案,但没有一个有效(请参阅下面的
无论我如何配置我的 appsettings.json 和 appsettings.Development.json,除非我手动添加 ConfigureLogging,否则我无法在信息消息下方记录任何内
我正在尝试使用 JQuery .get() 方法和 JavaScript for 循环来处理来自外部文件的一些数据。我已经在 stackoverflow 上阅读了有关闭包和回调返回值的内容几个小时,但
我正在使用 PHP 5.6 并且要打印一些东西,我必须编辑 php.ini 并包含 php_printer.dll 文件。但是 PHP 5.6 没有.dll 文件。 我要解决的问题: 我想将凭证打印机
我目前正在调试一个包含内存泄漏的大(非常大!)C# 应用程序。它主要使用 Winforms 作为 GUI,尽管一些控件是在 WPF 中制作的,并由 ElementHost 托管。直到现在,我发现许多内
[已解决] 看来 PHP MYADMIN 变量成功了。我将 wait_timeout 设置为 30 ,并将 Lock_wait_timeout 设置为 50 花了将近 6 个小时才恢复稳定,包括几次重
我读过几个关于该主题的讨论,有人说 qmake < 3.0 不正确支持该指令。我刚刚为 g++-64 重新安装了 Qt 5.9.1,但问题仍然存在。此外,我尝试过各种 mkspecs/xxx/xxx.
我是一名优秀的程序员,十分优秀!