我试图找出实现java Equals的正确方法。
在网上阅读时,我看到关于这个主题有很多想法,我将其缩小为2个选项:1使用的实例和使用getClass()!=obj.getClass()
遵循的规则:
https://docs.oracle.com/javase/7/docs/api/java/lang/object.html#Equals(java.lang.object)这是我的最终结果:
public class Foo {
private List<Long> days;
private String project;
public boolean equals(Object obj) {
if (this == obj)
return true;
//avoid symmetry problem
if (obj == null || getClass() != obj.getClass())
return false;
Foo test = (Foo)obj;
return equals(this.project,test.project) && equals(this.days,test.days);
}
public static boolean equals(Object a,Object b) {
return a == b || a != null && b!=null && a.equals(b);
}
}
你说呢?
重写代码时需要考虑以下几点:我们使用equals()比较对象;否则,=sign用于比较数据类型
问题内容: 是否有经过验证的Java Pair类实现? 我的意思是随时可用,被广泛接受并经过测试,也许是更广泛的库(例如Apache Commons或Guava)的一部分。 问题答案: 是的,看看Apache Commons 。 尽量少用, 如果在所有 ; 并没有真正传达元素之间的内容或关系的任何信息。 (该类被故意遗漏在标准Java API中。)
我这个程序采用的是netty,此程序中有客户端和服务端。 程序思路:服务端接受消息后在利用客户端发给别的服务端。 出现问题:时不时会出现这个异常,也不知道是那报的异常,经过查资料此异常是由某一端断开,发生的连接异常 ,我的客户端做了断开重连 但是并没发现重连的log ,难道是上游的客户端断开,那我的服务端也不应该报异常啊。不是很清楚? 有知道的吗?或者提供解决思路。 客户端重连代码 断开后进入重连
考虑一个图的实现。考虑图节点的一个实现,,正确地覆盖和以镜像两个节点之间的逻辑相等。 现在,假设我们想给一个节点添加一些属性p。这样的属性绑定到节点的逻辑实例,即对于,暗示p()=p() 如果我只是将属性作为类的字段添加,则发生了以下情况: null 总结一下,当前行为: 以下所有的说法在我看来都是有道理的。没有一个能让我完全信服,所以我正在寻找基于软件工程规范的最佳实践指南。 S1-图形实现很差
问题内容: …换句话说:假设我有2个这样声明的字符串: 这两个字符串是两个不同的对象,但是如果我运行 我得到“ equals()返回true”。这是因为String类重写equals()方法以实现内容级别相等。但是,我需要访问一个引用级别的相等性(如在Object中实现的相等性),以将一个对象与两个对象区分开。我怎样才能做到这一点? 我尝试了这个: 尝试调用String的Object equals
问题内容: 指针是仅用于实现Java参考变量还是实际上如何实现?以下是Java语言规范中的代码行 4.3.1对象对象是类实例或数组。引用值(通常只是引用)是指向这些对象的指针,还有一个特殊的空引用,它不引用任何对象。 这是否意味着一直都是指针? 问题答案: 在现代JVM中,引用被实现为地址。 回到HotSpot的第一个版本(对于“经典VM”来说更早一些),引用被实现为句柄。那是指向指针的固定指针。
问题内容: 我想检查一个是否包含一个具有特定值的字段的对象。现在,我可以使用一个循环来检查,但是我很好奇是否有更高效的代码。 类似的东西; 我知道上面的代码什么也做不了,只是为了大致演示一下我要实现的目标。 另外,为了澄清,我不想使用简单循环的原因是,这段代码当前将进入一个位于循环内的循环内。为了可读性,我不想一直在这些循环中添加循环。所以我想知道是否有简单的替代方案。 问题答案: Streams