`
lighter
  • 浏览: 501089 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

The Contract for Equality[java]

阅读更多
As we Know,The Java API documentation for the equals method in Object provides a list of what defines an equivalence relation between two objects:

Reflexivity:
x.equals(x)

Symmetry:
x.equals(y) if-and-only-if (iff) y.equals(x)

Transitivity:
if x.equals(y) and y.equals(z), then x.equals(z)

Consistency:
x.equals(y) returns a consistent value given consistent state

Comparison to null:
!x.equals(null)



let's look a simple example,the test code:
import junit.framework.TestCase;

public class CourseTest extends TestCase {
	public void testCreate() {
		Course course = new Course("CMSC", "120");
		assertEquals("CMSC", course.getDepartment());
		assertEquals("120", course.getNumber());
	}

	public void testEquality() {
		Course courseA = new Course("NURS", "201");
		Course courseAPrime = new Course("NURS", "201");
		assertEquals(courseA, courseAPrime);

		Course courseB = new Course("ARTH", "330");
		assertFalse(courseA.equals(courseB));

		// reflexivity
		assertEquals(courseA, courseA);

		// transitivity
		Course courseAPrime2 = new Course("NURS", "201");
		assertEquals(courseAPrime, courseAPrime2);
		assertEquals(courseA, courseAPrime2);

		// symmetry
		assertEquals(courseAPrime, courseA);

		// consistency
		assertEquals(courseA, courseAPrime);

		// comparison to null
		assertFalse(courseA.equals(null));
		
		assertFalse(courseA.equals("CMSC-120"));
	}
}



the class is:
public class Course {

	private String department;

	private String number;

	public Course(String department, String number) {
		this.department = department;
		this.number = number;
	}

	public String getDepartment() {
		return department;
	}

	public String getNumber() {
		return number;
	}

	@Override
	public boolean equals(Object object) {
		if (object == null)
			return false;
		if (!(object instanceof Course))
			return false;
		Course that = (Course) object;
		return this.department.equals(that.department)
				&& this.number.equals(that.number);

	}
}

see about:<<agile java>> Lession 9,The Contract for Equality
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics