浏览代码

Merge pull request #696 from jason-liu475/v5-master

重写hashCode和equals
Golden Looly 6 年之前
父节点
当前提交
15151f777e

+ 13 - 13
hutool-core/src/main/java/cn/hutool/core/getter/OptNullBasicTypeFromObjectGetter.java

@@ -14,7 +14,7 @@ import cn.hutool.core.convert.Convert;
  * @author Looly
  */
 public interface OptNullBasicTypeFromObjectGetter<K> extends OptNullBasicTypeGetter<K>{
-	
+	@Override
 	default String getStr(K key, String defaultValue) {
 		final Object obj = getObj(key);
 		if(null == obj) {
@@ -22,7 +22,7 @@ public interface OptNullBasicTypeFromObjectGetter<K> extends OptNullBasicTypeGet
 		}
 		return Convert.toStr(obj, defaultValue);
 	}
-
+	@Override
 	default Integer getInt(K key, Integer defaultValue) {
 		final Object obj = getObj(key);
 		if(null == obj) {
@@ -30,7 +30,7 @@ public interface OptNullBasicTypeFromObjectGetter<K> extends OptNullBasicTypeGet
 		}
 		return Convert.toInt(obj, defaultValue);
 	}
-
+	@Override
 	default Short getShort(K key, Short defaultValue) {
 		final Object obj = getObj(key);
 		if(null == obj) {
@@ -38,7 +38,7 @@ public interface OptNullBasicTypeFromObjectGetter<K> extends OptNullBasicTypeGet
 		}
 		return Convert.toShort(obj, defaultValue);
 	}
-
+	@Override
 	default Boolean getBool(K key, Boolean defaultValue) {
 		final Object obj = getObj(key);
 		if(null == obj) {
@@ -46,7 +46,7 @@ public interface OptNullBasicTypeFromObjectGetter<K> extends OptNullBasicTypeGet
 		}
 		return Convert.toBool(obj, defaultValue);
 	}
-
+	@Override
 	default Long getLong(K key, Long defaultValue) {
 		final Object obj = getObj(key);
 		if(null == obj) {
@@ -54,7 +54,7 @@ public interface OptNullBasicTypeFromObjectGetter<K> extends OptNullBasicTypeGet
 		}
 		return Convert.toLong(obj, defaultValue);
 	}
-
+	@Override
 	default Character getChar(K key, Character defaultValue) {
 		final Object obj = getObj(key);
 		if(null == obj) {
@@ -62,7 +62,7 @@ public interface OptNullBasicTypeFromObjectGetter<K> extends OptNullBasicTypeGet
 		}
 		return Convert.toChar(obj, defaultValue);
 	}
-
+	@Override
 	default Float getFloat(K key, Float defaultValue) {
 		final Object obj = getObj(key);
 		if(null == obj) {
@@ -70,7 +70,7 @@ public interface OptNullBasicTypeFromObjectGetter<K> extends OptNullBasicTypeGet
 		}
 		return Convert.toFloat(obj, defaultValue);
 	}
-
+	@Override
 	default Double getDouble(K key, Double defaultValue) {
 		final Object obj = getObj(key);
 		if(null == obj) {
@@ -78,7 +78,7 @@ public interface OptNullBasicTypeFromObjectGetter<K> extends OptNullBasicTypeGet
 		}
 		return Convert.toDouble(obj, defaultValue);
 	}
-
+	@Override
 	default Byte getByte(K key, Byte defaultValue) {
 		final Object obj = getObj(key);
 		if(null == obj) {
@@ -86,7 +86,7 @@ public interface OptNullBasicTypeFromObjectGetter<K> extends OptNullBasicTypeGet
 		}
 		return Convert.toByte(obj, defaultValue);
 	}
-
+	@Override
 	default BigDecimal getBigDecimal(K key, BigDecimal defaultValue) {
 		final Object obj = getObj(key);
 		if(null == obj) {
@@ -94,7 +94,7 @@ public interface OptNullBasicTypeFromObjectGetter<K> extends OptNullBasicTypeGet
 		}
 		return Convert.toBigDecimal(obj, defaultValue);
 	}
-
+	@Override
 	default BigInteger getBigInteger(K key, BigInteger defaultValue) {
 		final Object obj = getObj(key);
 		if(null == obj) {
@@ -102,7 +102,7 @@ public interface OptNullBasicTypeFromObjectGetter<K> extends OptNullBasicTypeGet
 		}
 		return Convert.toBigInteger(obj, defaultValue);
 	}
-
+	@Override
 	default <E extends Enum<E>> E getEnum(Class<E> clazz, K key, E defaultValue) {
 		final Object obj = getObj(key);
 		if(null == obj) {
@@ -110,7 +110,7 @@ public interface OptNullBasicTypeFromObjectGetter<K> extends OptNullBasicTypeGet
 		}
 		return Convert.toEnum(clazz, obj, defaultValue);
 	}
-
+	@Override
 	default Date getDate(K key, Date defaultValue) {
 		final Object obj = getObj(key);
 		if(null == obj) {

+ 13 - 13
hutool-core/src/main/java/cn/hutool/core/getter/OptNullBasicTypeFromStringGetter.java

@@ -13,55 +13,55 @@ import cn.hutool.core.convert.Convert;
  * @author Looly
  */
 public interface OptNullBasicTypeFromStringGetter<K> extends OptNullBasicTypeGetter<K> {
-
+	@Override
 	default Object getObj(K key, Object defaultValue) {
 		return getStr(key, null == defaultValue ? null : defaultValue.toString());
 	}
-
+	@Override
 	default Integer getInt(K key, Integer defaultValue) {
 		return Convert.toInt(getStr(key), defaultValue);
 	}
-
+	@Override
 	default Short getShort(K key, Short defaultValue) {
 		return Convert.toShort(getStr(key), defaultValue);
 	}
-
+	@Override
 	default Boolean getBool(K key, Boolean defaultValue) {
 		return Convert.toBool(getStr(key), defaultValue);
 	}
-
+	@Override
 	default Long getLong(K key, Long defaultValue) {
 		return Convert.toLong(getStr(key), defaultValue);
 	}
-
+	@Override
 	default Character getChar(K key, Character defaultValue) {
 		return Convert.toChar(getStr(key), defaultValue);
 	}
-
+	@Override
 	default Float getFloat(K key, Float defaultValue) {
 		return Convert.toFloat(getStr(key), defaultValue);
 	}
-
+	@Override
 	default Double getDouble(K key, Double defaultValue) {
 		return Convert.toDouble(getStr(key), defaultValue);
 	}
-
+	@Override
 	default Byte getByte(K key, Byte defaultValue) {
 		return Convert.toByte(getStr(key), defaultValue);
 	}
-
+	@Override
 	default BigDecimal getBigDecimal(K key, BigDecimal defaultValue) {
 		return Convert.toBigDecimal(getStr(key), defaultValue);
 	}
-
+	@Override
 	default BigInteger getBigInteger(K key, BigInteger defaultValue) {
 		return Convert.toBigInteger(getStr(key), defaultValue);
 	}
-
+	@Override
 	default <E extends Enum<E>> E getEnum(Class<E> clazz, K key, E defaultValue) {
 		return Convert.toEnum(clazz, getStr(key), defaultValue);
 	}
-
+	@Override
 	default Date getDate(K key, Date defaultValue) {
 		return Convert.toDate(getStr(key), defaultValue);
 	}

+ 14 - 1
hutool-core/src/main/java/cn/hutool/core/getter/OptNullBasicTypeGetter.java

@@ -12,7 +12,7 @@ import java.util.Date;
  * @author Looly
  */
 public interface OptNullBasicTypeGetter<K> extends BasicTypeGetter<K>, OptBasicTypeGetter<K>{
-	
+	@Override
 	default Object getObj(K key) {
 		return getObj(key, null);
 	}
@@ -24,6 +24,7 @@ public interface OptNullBasicTypeGetter<K> extends BasicTypeGetter<K>, OptBasicT
 	 * @param key 属性名
 	 * @return 属性值
 	 */
+	@Override
 	default String getStr(K key){
 		return this.getStr(key, null);
 	}
@@ -35,6 +36,7 @@ public interface OptNullBasicTypeGetter<K> extends BasicTypeGetter<K>, OptBasicT
 	 * @param key 属性名
 	 * @return 属性值
 	 */
+	@Override
 	default Integer getInt(K key) {
 		return this.getInt(key, null);
 	}
@@ -46,6 +48,7 @@ public interface OptNullBasicTypeGetter<K> extends BasicTypeGetter<K>, OptBasicT
 	 * @param key 属性名
 	 * @return 属性值
 	 */
+	@Override
 	default Short getShort(K key){
 		return this.getShort(key, null);
 	}
@@ -57,6 +60,7 @@ public interface OptNullBasicTypeGetter<K> extends BasicTypeGetter<K>, OptBasicT
 	 * @param key 属性名
 	 * @return 属性值
 	 */
+	@Override
 	default Boolean getBool(K key){
 		return this.getBool(key, null);
 	}
@@ -68,6 +72,7 @@ public interface OptNullBasicTypeGetter<K> extends BasicTypeGetter<K>, OptBasicT
 	 * @param key 属性名
 	 * @return 属性值
 	 */
+	@Override
 	default Long getLong(K key){
 		return this.getLong(key, null);
 	}
@@ -79,6 +84,7 @@ public interface OptNullBasicTypeGetter<K> extends BasicTypeGetter<K>, OptBasicT
 	 * @param key 属性名
 	 * @return 属性值
 	 */
+	@Override
 	default Character getChar(K key){
 		return this.getChar(key, null);
 	}
@@ -90,6 +96,7 @@ public interface OptNullBasicTypeGetter<K> extends BasicTypeGetter<K>, OptBasicT
 	 * @param key 属性名
 	 * @return 属性值
 	 */
+	@Override
 	default Float getFloat(K key){
 		return this.getFloat(key, null);
 	}
@@ -101,6 +108,7 @@ public interface OptNullBasicTypeGetter<K> extends BasicTypeGetter<K>, OptBasicT
 	 * @param key 属性名
 	 * @return 属性值
 	 */
+	@Override
 	default Double getDouble(K key){
 		return this.getDouble(key, null);
 	}
@@ -112,6 +120,7 @@ public interface OptNullBasicTypeGetter<K> extends BasicTypeGetter<K>, OptBasicT
 	 * @param key 属性名
 	 * @return 属性值
 	 */
+	@Override
 	default Byte getByte(K key){
 		return this.getByte(key, null);
 	}
@@ -123,6 +132,7 @@ public interface OptNullBasicTypeGetter<K> extends BasicTypeGetter<K>, OptBasicT
 	 * @param key 属性名
 	 * @return 属性值
 	 */
+	@Override
 	default BigDecimal getBigDecimal(K key){
 		return this.getBigDecimal(key, null);
 	}
@@ -134,6 +144,7 @@ public interface OptNullBasicTypeGetter<K> extends BasicTypeGetter<K>, OptBasicT
 	 * @param key 属性名
 	 * @return 属性值
 	 */
+	@Override
 	default BigInteger getBigInteger(K key){
 		return this.getBigInteger(key, null);
 	}
@@ -146,6 +157,7 @@ public interface OptNullBasicTypeGetter<K> extends BasicTypeGetter<K>, OptBasicT
 	 * @param key 属性名
 	 * @return 属性值
 	 */
+	@Override
 	default <E extends Enum<E>> E getEnum(Class<E> clazz, K key) {
 		return this.getEnum(clazz, key, null);
 	}
@@ -157,6 +169,7 @@ public interface OptNullBasicTypeGetter<K> extends BasicTypeGetter<K>, OptBasicT
 	 * @param key 属性名
 	 * @return 属性值
 	 */
+	@Override
 	default Date getDate(K key) {
 		return this.getDate(key, null);
 	}

+ 1 - 0
hutool-core/src/main/java/cn/hutool/core/io/resource/NoResourceException.java

@@ -39,6 +39,7 @@ public class NoResourceException extends IORuntimeException {
 	 * @param clazz 异常类
 	 * @return 是否为指定类型异常
 	 */
+	@Override
 	public boolean causeInstanceOf(Class<? extends Throwable> clazz) {
 		final Throwable cause = this.getCause();
 		return clazz.isInstance(cause);

+ 1 - 0
hutool-core/src/main/java/cn/hutool/core/io/resource/UrlResource.java

@@ -79,6 +79,7 @@ public class UrlResource implements Resource, Serializable{
 	 * @return {@link BufferedReader}
 	 * @since 3.0.1
 	 */
+	@Override
 	public BufferedReader getReader(Charset charset){
 		return URLUtil.getReader(this.url, charset);
 	}

+ 1 - 0
hutool-core/src/main/java/cn/hutool/core/io/watch/WatchMonitor.java

@@ -319,6 +319,7 @@ public class WatchMonitor extends WatchServer {
 	 *
 	 * @throws WatchException 监听异常,IO异常时抛出此异常
 	 */
+	@Override
 	public void init() throws WatchException {
 		//获取目录或文件路径
 		if (false == Files.exists(this.path, LinkOption.NOFOLLOW_LINKS)) {

+ 1 - 0
hutool-core/src/main/java/cn/hutool/core/lang/Dict.java

@@ -423,6 +423,7 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
 	 * @param attr 字段名
 	 * @return 字段值
 	 */
+	@Override
 	public Date getDate(String attr) {
 		return get(attr, null);
 	}

+ 19 - 0
hutool-core/src/main/java/cn/hutool/core/lang/Pair.java

@@ -1,6 +1,7 @@
 package cn.hutool.core.lang;
 
 import java.io.Serializable;
+import java.util.Objects;
 
 import cn.hutool.core.clone.CloneSupport;
 
@@ -50,4 +51,22 @@ public class Pair<K, V> extends CloneSupport<Pair<K, V>> implements Serializable
 	public String toString() {
 		return "Pair [key=" + key + ", value=" + value + "]";
 	}
+
+	@Override
+	public boolean equals(Object o) {
+		if (this == o)
+			return true;
+		if (o instanceof Pair) {
+			Pair<?, ?> pair = (Pair<?, ?>) o;
+			return Objects.equals(getKey(), pair.getKey()) &&
+					Objects.equals(getValue(), pair.getValue());
+		}
+		return false;
+	}
+
+	@Override
+	public int hashCode() {
+		//copy from 1.8 HashMap.Node
+		return Objects.hashCode(key) ^ Objects.hashCode(value);
+	}
 }

+ 3 - 0
hutool-core/src/main/java/cn/hutool/core/lang/UUID.java

@@ -374,6 +374,7 @@ public final class UUID implements java.io.Serializable, Comparable<UUID> {
 	 *
 	 * @return UUID 的哈希码值。
 	 */
+	@Override
 	public int hashCode() {
 		long hilo = mostSigBits ^ leastSigBits;
 		return ((int) (hilo >> 32)) ^ (int) hilo;
@@ -387,6 +388,7 @@ public final class UUID implements java.io.Serializable, Comparable<UUID> {
 	 * @param obj 要与之比较的对象
 	 * @return 如果对象相同,则返回 {@code true};否则返回 {@code false}
 	 */
+	@Override
 	public boolean equals(Object obj) {
 		if ((null == obj) || (obj.getClass() != UUID.class)) {
 			return false;
@@ -406,6 +408,7 @@ public final class UUID implements java.io.Serializable, Comparable<UUID> {
 	 * @param val 与此 UUID 比较的 UUID
 	 * @return 在此 UUID 小于、等于或大于 val 时,分别返回 -1、0 或 1。
 	 */
+	@Override
 	public int compareTo(UUID val) {
 		// The ordering is intentionally set up so that the UUIDs
 		// can simply be numerically compared as two numbers

+ 17 - 6
hutool-core/src/main/java/cn/hutool/core/map/TableMap.java

@@ -1,12 +1,7 @@
 package cn.hutool.core.map;
 
 import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ArrayUtil;
@@ -154,6 +149,22 @@ public class TableMap<K, V> implements Map<K, V>, Serializable {
 		public V setValue(V value) {
 			throw new UnsupportedOperationException("setValue not supported.");
 		}
+		@Override
+		public final boolean equals(Object o) {
+			if (o == this)
+				return true;
+			if (o instanceof Map.Entry) {
+				Map.Entry<?,?> e = (Map.Entry<?,?>)o;
+				return Objects.equals(key, e.getKey()) &&
+						Objects.equals(value, e.getValue());
+			}
+			return false;
+		}
 
+		@Override
+		public int hashCode() {
+			//copy from 1.8 HashMap.Node
+			return Objects.hashCode(key) ^ Objects.hashCode(value);
+		}
 	}
 }

+ 1 - 0
hutool-core/src/main/java/cn/hutool/core/math/Money.java

@@ -776,6 +776,7 @@ public class Money implements Serializable, Comparable<Money> {
 	/**
 	 * 生成本对象的缺省字符串表示
 	 */
+	@Override
 	public String toString() {
 		return getAmount().toString();
 	}

+ 1 - 0
hutool-db/src/main/java/cn/hutool/db/Entity.java

@@ -231,6 +231,7 @@ public class Entity extends Dict {
 	 * @return Dict 结果
 	 * @since 4.0.10
 	 */
+	@Override
 	public Entity filter(String... keys) {
 		final Entity result = new Entity(this.tableName);
 		result.setFieldNames(this.fieldNames);

+ 1 - 0
hutool-db/src/main/java/cn/hutool/db/Session.java

@@ -98,6 +98,7 @@ public class Session extends AbstractDb implements Closeable {
 	 * 
 	 * @return {@link SqlConnRunner}
 	 */
+	@Override
 	public SqlConnRunner getRunner() {
 		return runner;
 	}

+ 1 - 0
hutool-setting/src/main/java/cn/hutool/setting/Setting.java

@@ -223,6 +223,7 @@ public class Setting extends AbsSetting implements Map<String, String> {
 	 *
 	 * @return 键值总数
 	 */
+	@Override
 	public int size() {
 		return this.groupedMap.size();
 	}