现有类A import java.io.Serializable;public class A implements Serializable{
private static final long serialVersionUID = 1L; private int a; private String b; public int getA() {
return a;
} public void setA(int a) {
this.a = a;
} public String getB() {
return b;
} public void setB(String b) {
this.b = b;
} @Override
public int hashCode() {
final int PRIME = 31;
int result = 1;
result = PRIME * result + a;
result = PRIME * result + ((b == null) ? 0 : b.hashCode());
return result;
} @Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
final A other = (A) obj;
if (a != other.a)
return false;
if (b == null) {
if (other.b != null)
return false;
} else if (!b.equals(other.b))
return false;
return true;
}}import java.io.Serializable;public class SuperA implements Serializable { private static final long serialVersionUID = 1L; private A a; public A getA() {
return a;
} public void setA(A a) {
this.a = a;
} @Override
public int hashCode() {
final int PRIME = 31;
int result = 1;
result = PRIME * result + ((a == null) ? 0 : a.hashCode());
return result;
} @Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
final SuperA other = (SuperA) obj;
if (a == null) {
if (other.a != null)
return false;
} else if (!a.equals(other.a))
return false;
return true;
}}在SuperA类中有没有必要将A属性一并写入equals和hashcode方法中去???
private static final long serialVersionUID = 1L; private int a; private String b; public int getA() {
return a;
} public void setA(int a) {
this.a = a;
} public String getB() {
return b;
} public void setB(String b) {
this.b = b;
} @Override
public int hashCode() {
final int PRIME = 31;
int result = 1;
result = PRIME * result + a;
result = PRIME * result + ((b == null) ? 0 : b.hashCode());
return result;
} @Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
final A other = (A) obj;
if (a != other.a)
return false;
if (b == null) {
if (other.b != null)
return false;
} else if (!b.equals(other.b))
return false;
return true;
}}import java.io.Serializable;public class SuperA implements Serializable { private static final long serialVersionUID = 1L; private A a; public A getA() {
return a;
} public void setA(A a) {
this.a = a;
} @Override
public int hashCode() {
final int PRIME = 31;
int result = 1;
result = PRIME * result + ((a == null) ? 0 : a.hashCode());
return result;
} @Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
final SuperA other = (SuperA) obj;
if (a == null) {
if (other.a != null)
return false;
} else if (!a.equals(other.a))
return false;
return true;
}}在SuperA类中有没有必要将A属性一并写入equals和hashcode方法中去???
解决方案 »
- 一直困惑于乱码的几个问题!
- String s ="aaa"; 创建了几个对象,几个引用??
- 关于String与StringBuffer作为参数的不同?
- 求教 Jtable问题
- 介绍一个java群,想加入的留下QQ号码
- 为何不能正常接收文件?
- 读写Excel,POI-HSSF会破坏公式,换JXL不会,为何?(有源码)
- 谁能告诉我哪里有Borland Optimizeit Profiler V4.11? 急需!
- a tool class to convert bmp to wbmp used in wap
- 请问Clane:C和java通过Socket通讯的问题
- 两个非常简单的文件,却编译不过...
- 关于wap push的实现
SuperA sa1 = new SuperA();
A a1 = new A();
a1.setA(10);
sa1.setA(a1);
SuperA sa2= new SuperA();
A a2 = new A();
a2.setA(20);
sa2.setA(a2);
System.out.println(sa1.equals(sa2));
equals改成:
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
/*
final SuperA other = (SuperA) obj;
if (a == null) {
if (other.a != null)
return false;
} else if (!a.equals(other.a))
return false;
*/
return true;
}
上面的输出结果是true,不符合逻辑