XAttr { @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (obj == this) { return true; } if (obj.getClass() != getClass()) { return false; } XAttr rhs = (XAttr) obj; return new EqualsBuilder() .append(ns, rhs.ns) .append(name, rhs.name) .append(value, rhs.value) .isEquals(); } private  XAttr(NameSpace ns, String name, byte[] value); NameSpace getNameSpace(); String getName(); byte[] getValue(); @Override int hashCode(); @Override boolean equals(Object obj); boolean equalsIgnoreValue(Object obj); @Override String toString();  }
@Test public void testXAttrEquals() { assertNotSame(XATTR1, XATTR2); assertNotSame(XATTR2, XATTR3); assertNotSame(XATTR3, XATTR4); assertNotSame(XATTR4, XATTR5); assertEquals(XATTR, XATTR1); assertEquals(XATTR1, XATTR1); assertEquals(XATTR2, XATTR2); assertEquals(XATTR3, XATTR3); assertEquals(XATTR4, XATTR4); assertEquals(XATTR5, XATTR5); assertFalse(XATTR1.equals(XATTR2)); assertFalse(XATTR2.equals(XATTR3)); assertFalse(XATTR3.equals(XATTR4)); assertFalse(XATTR4.equals(XATTR5)); }