From e21f3152398a2fd739e3c0da2f9d5b662205e9e3 Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Tue, 2 Oct 2018 21:25:29 +0800 Subject: [PATCH] Fix VersionNumber.equals() and hashCode() may not be consistent --- .../hmcl/util/versioning/ComposedVersionNumber.java | 6 ------ .../hmcl/util/versioning/IntVersionNumber.java | 6 ------ .../hmcl/util/versioning/StringVersionNumber.java | 5 ----- .../jackhuang/hmcl/util/versioning/VersionNumber.java | 10 +++++++--- 4 files changed, 7 insertions(+), 20 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/ComposedVersionNumber.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/ComposedVersionNumber.java index 099760cd7..b37258819 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/ComposedVersionNumber.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/ComposedVersionNumber.java @@ -19,7 +19,6 @@ package org.jackhuang.hmcl.util.versioning; import java.util.Arrays; import java.util.List; -import java.util.Objects; import java.util.stream.Collectors; /** @@ -43,11 +42,6 @@ public final class ComposedVersionNumber extends VersionNumber { .collect(Collectors.toList()); } - @Override - public int hashCode() { - return Objects.hash(composed); - } - @Override public String toString() { return composed.stream().map(VersionNumber::toString).collect(Collectors.joining("-")); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/IntVersionNumber.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/IntVersionNumber.java index a9b5a2a81..3da7dbb48 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/IntVersionNumber.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/IntVersionNumber.java @@ -19,7 +19,6 @@ package org.jackhuang.hmcl.util.versioning; import java.util.Arrays; import java.util.List; -import java.util.Objects; import java.util.stream.Collectors; import org.jackhuang.hmcl.util.StringUtils; @@ -65,11 +64,6 @@ public final class IntVersionNumber extends VersionNumber { return version.get(index); } - @Override - public int hashCode() { - return Objects.hash(version); - } - @Override public String toString() { return version.stream().map(Object::toString).collect(Collectors.joining(".")); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/StringVersionNumber.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/StringVersionNumber.java index e97c32e97..9c981dac4 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/StringVersionNumber.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/StringVersionNumber.java @@ -38,11 +38,6 @@ public final class StringVersionNumber extends VersionNumber { return version; } - @Override - public int hashCode() { - return version.hashCode(); - } - @Override public String toString() { return version; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/VersionNumber.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/VersionNumber.java index 91e23e48c..47385ac60 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/VersionNumber.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/VersionNumber.java @@ -52,9 +52,13 @@ public abstract class VersionNumber implements Comparable { } @Override - public boolean equals(Object obj) { - if (obj == null) return false; - else return toString().equals(obj.toString()); + public boolean equals(Object another) { + return another instanceof VersionNumber && this.toString().equals(another.toString()); + } + + @Override + public int hashCode() { + return toString().hashCode(); } private static > int compareTo(List a, List b) {