diff options
Diffstat (limited to 'website/usageExamples/EqualsAndHashCodeExample_post.jpage')
-rw-r--r-- | website/usageExamples/EqualsAndHashCodeExample_post.jpage | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/website/usageExamples/EqualsAndHashCodeExample_post.jpage b/website/usageExamples/EqualsAndHashCodeExample_post.jpage new file mode 100644 index 00000000..91e78250 --- /dev/null +++ b/website/usageExamples/EqualsAndHashCodeExample_post.jpage @@ -0,0 +1,72 @@ +import java.util.Arrays; + +public class EqualsAndHashCodeExample { + private transient int transientVar = 10; + private String name; + private double score; + private Shape shape = new Square(5, 10); + private String[] tags; + private int id; + + public String getName() { + return this.name; + } + + @Override public boolean equals(Object o) { + if (o == this) return true; + if (!(o instanceof EqualsAndHashCodeExample)) return false; + EqualsAndHashCodeExample other = (EqualsAndHashCodeExample) o; + if (!other.canEqual((Object)this)) return false; + if (this.getName() == null ? other.getName() != null : !this.getName().equals(other.getName())) return false; + if (Double.compare(this.score, other.score) != 0) return false; + if (!Arrays.deepEquals(this.tags, other.tags)) return false; + return true; + } + + @Override public int hashCode() { + final int PRIME = 59; + int result = 1; + final long temp1 = Double.doubleToLongBits(this.score); + result = (result*PRIME) + (this.name == null ? 43 : this.name.hashCode()); + result = (result*PRIME) + (int)(temp1 ^ (temp1 >>> 32)); + result = (result*PRIME) + Arrays.deepHashCode(this.tags); + return result; + } + + protected boolean canEqual(Object other) { + return other instanceof EqualsAndHashCodeExample; + } + + public static class Square extends Shape { + private final int width, height; + + public Square(int width, int height) { + this.width = width; + this.height = height; + } + + @Override public boolean equals(Object o) { + if (o == this) return true; + if (!(o instanceof Square)) return false; + Square other = (Square) o; + if (!other.canEqual((Object)this)) return false; + if (!super.equals(o)) return false; + if (this.width != other.width) return false; + if (this.height != other.height) return false; + return true; + } + + @Override public int hashCode() { + final int PRIME = 59; + int result = 1; + result = (result*PRIME) + super.hashCode(); + result = (result*PRIME) + this.width; + result = (result*PRIME) + this.height; + return result; + } + + protected boolean canEqual(Object other) { + return other instanceof Square; + } + } +} |