Java中equals()重写示例

原创 2018年04月16日 21:45:28

很多时候看到许多地方说在自己的类里重写equals()方便用以比较两个对象相等,但一直未能详细探索到底怎么重写是比较好的方式。如今看到书上的一个模板,故记之。

如果该对象的引用和参数对象的引用相同,返回true。这项测试在成立时能够免去其他所有测试工作。

如果参数为null,返回false(还可以避免在之后的代码中使用空引用)。

如果两个对象的类不同,返回false。要得到一个对象的类,可以使用getClass()方法。可以使用==判断Class类型的对象是否相等,因为同一种类型的所有对象的getClass()一定能够返回相同的引用。

将参数对象的类型从Object转换到Date,因为前一项已经测试已经通过,这种转换必然成功。

如果任意实例变量的值不相同,返回false。

实例类Date如下:

public class Date {
	private final int month;
	private final int day;
	private final int year;

	public Date(int m, int d, int y) {
		month = m;
		day = d;
		year = y;
	}

	public int month() {
		return month;
	}

	public int day() {
		return day;
	}

	public int year() {
		return year;
	}

	public boolean equals(Object x) {
		if (this == x) {
			return true;
		}
		if (x == null) {
			return false;
		}
		if (this.getClass() != x.getClass()) {
			return false;
		}
		Date that = (Date) x;
		if (this.day != that.day) {
			return false;
		}
		if (this.month != that.month) {
			return false;
		}
		if (this.year != that.year) {
			return false;
		}
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wuqingdeqing/article/details/79966838

Java架构师之路——Java中高阶知识精讲

-
  • 1970年01月01日 08:00

Java Set详解及实例,重写equals()和hashCode()

详细讲解HashSet的特点,HashSet元素的存储原理,HashSet实例
  • zcl_666
  • zcl_666
  • 2016-09-19 10:44:42
  • 3737

Object类学习之equals方法重写

我们知道java中所有的类都有equals方法,因为Object类拥有equals方法 object对象中的 public boolean equals(Object obj),指示其他某个对象...
  • zhangqindabendan
  • zhangqindabendan
  • 2017-01-31 22:10:57
  • 3419

Java重写equals方法实现去重

我们经常会遇到一些业务,要对数据进行去重,我们可能首先想到的就是重写equals方法,但是结果却不尽人意,这是为啥呢?其实还需要重写hashCode方法,因为光重写equals方法是不够的 pu...
  • wangli0829
  • wangli0829
  • 2017-04-25 18:10:52
  • 245952

java中正确重写equals方法

hashCode()和equals()方法,定义在Object类中,这个类是所有类的基类,所以所有的java类都继承了这两个方法。         hashCode()方法用来给对象获取唯一的一个整...
  • LikeSetaria
  • LikeSetaria
  • 2016-04-29 14:31:17
  • 13564

Java中equals()方法重写

Java中的equals()方法是在Object类中定义,Object类是所有类的父类。换句话说,任何类都隐含地继承了该方法。判断两个对象的内容是否相同,必须使用equals()方法,对于没有重写该方...
  • wangloveall
  • wangloveall
  • 2012-08-23 15:17:41
  • 16329

java重写equals方法需要注意的几点

尽管object是一个具体类,涉及它就是为了扩展它,它所有的非final方法(equals,hashCode,toString,clone和finalize)都有一些通用的规定,因为它们被设计就是用来...
  • dimudan2015
  • dimudan2015
  • 2017-04-04 08:29:10
  • 2049

java 中 重写equals方法的用处

以前只是在学习java的时候遇到了equals方法,对于重写equals有什么用是一点也不清楚,今天在项目在做比对的时候出了问题, 就试着重写了equals方法,结果就解决了问题。 在开发的时...
  • footballclub
  • footballclub
  • 2015-01-05 14:33:11
  • 2732

java-equals和==的比较规则和equals的重写

1、java中equals和==的区别 值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。 2、==操作比较的是两个变量的值是否相等,对...
  • defineshan
  • defineshan
  • 2016-08-22 15:12:15
  • 1121

Java重写equals方法

equals方法的特性 自反性:对于任意的引用值x,x.equals(x)一定为true 对称性:对于任意的引用值x 和 y,当x.equals(y)返回true,y.equals(x)也一定返回tr...
  • wwcoder
  • wwcoder
  • 2016-10-08 17:00:08
  • 406
收藏助手
不良信息举报
您举报文章:Java中equals()重写示例
举报原因:
原因补充:

(最多只允许输入30个字)