From 432c93b0bbe85435dbe2c1e61c8748ee98008772 Mon Sep 17 00:00:00 2001 From: Martin Duhem Date: Fri, 19 Aug 2016 15:41:56 +0200 Subject: [PATCH 1/2] Implement hashCode, equals and toString in Maybe This brings Maybe's behavior closer to scala's Option. --- .../src/main/java/xsbti/Maybe.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/internal/util-interface/src/main/java/xsbti/Maybe.java b/internal/util-interface/src/main/java/xsbti/Maybe.java index f730ef918..c52671f77 100644 --- a/internal/util-interface/src/main/java/xsbti/Maybe.java +++ b/internal/util-interface/src/main/java/xsbti/Maybe.java @@ -14,6 +14,16 @@ public abstract class Maybe return new Maybe() { public boolean isDefined() { return true; } public s get() { return v; } + public int hashCode() { return 17 + (v == null ? 0 : v.hashCode()); } + public String toString() { return "Maybe(" + v + ")"; } + public boolean equals(Object o) { + if (o == null) return false; + if (!(o instanceof Maybe)) return false; + Maybe other = (Maybe) o; + if (!other.isDefined()) return false; + if (v == null) return other.get() == null; + return v.equals(other.get()); + } }; } public static Maybe nothing() @@ -21,10 +31,19 @@ public abstract class Maybe return new Maybe() { public boolean isDefined() { return false; } public s get() { throw new UnsupportedOperationException("nothing.get"); } + public int hashCode() { return 1; } + public String toString() { return "Nothing"; } + public boolean equals(Object o) { + if (o == null) return false; + if (!(o instanceof Maybe)) return false; + Maybe other = (Maybe) o; + return !other.isDefined(); + } }; + } public final boolean isEmpty() { return !isDefined(); } public abstract boolean isDefined(); public abstract t get(); -} \ No newline at end of file +} From 4e233d81f960d0b1d79a6786214040756d9156c3 Mon Sep 17 00:00:00 2001 From: Martin Duhem Date: Sun, 21 Aug 2016 14:24:34 +0200 Subject: [PATCH 2/2] Make Maybe's toString closer to the actual code --- internal/util-interface/src/main/java/xsbti/Maybe.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/util-interface/src/main/java/xsbti/Maybe.java b/internal/util-interface/src/main/java/xsbti/Maybe.java index c52671f77..3280e5990 100644 --- a/internal/util-interface/src/main/java/xsbti/Maybe.java +++ b/internal/util-interface/src/main/java/xsbti/Maybe.java @@ -15,7 +15,7 @@ public abstract class Maybe public boolean isDefined() { return true; } public s get() { return v; } public int hashCode() { return 17 + (v == null ? 0 : v.hashCode()); } - public String toString() { return "Maybe(" + v + ")"; } + public String toString() { return "Maybe.just(" + v + ")"; } public boolean equals(Object o) { if (o == null) return false; if (!(o instanceof Maybe)) return false; @@ -32,7 +32,7 @@ public abstract class Maybe public boolean isDefined() { return false; } public s get() { throw new UnsupportedOperationException("nothing.get"); } public int hashCode() { return 1; } - public String toString() { return "Nothing"; } + public String toString() { return "Maybe.nothing()"; } public boolean equals(Object o) { if (o == null) return false; if (!(o instanceof Maybe)) return false;