diff --git a/hutool-bloomFilter/src/main/java/cn/hutool/bloomfilter/BloomFilter.java b/hutool-bloomFilter/src/main/java/cn/hutool/bloomfilter/BloomFilter.java
index e7c9cc9fc..9ab8278b3 100644
--- a/hutool-bloomFilter/src/main/java/cn/hutool/bloomfilter/BloomFilter.java
+++ b/hutool-bloomFilter/src/main/java/cn/hutool/bloomfilter/BloomFilter.java
@@ -20,10 +20,10 @@ public interface BloomFilter extends Serializable{
/**
* 在boolean的bitMap中增加一个字符串
- * 如果存在就返回false
.如果不存在.先增加这个字符串.再返回true
+ * 如果存在就返回{@code false} .如果不存在.先增加这个字符串.再返回{@code true}
*
* @param str 字符串
- * @return 是否加入成功,如果存在就返回false
.如果不存在返回true
+ * @return 是否加入成功,如果存在就返回{@code false} .如果不存在返回{@code true}
*/
boolean add(String str);
-}
\ No newline at end of file
+}
diff --git a/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java
index 3479c17b8..02699d4a4 100644
--- a/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java
@@ -684,7 +684,7 @@ public class IoUtil extends NioUtil {
* @return 内容
* @throws IORuntimeException IO异常
*/
- public static > T readLines(Reader reader, final T collection) throws IORuntimeException {
+ public static > T readLines(Reader reader, T collection) throws IORuntimeException {
readLines(reader, (LineHandler) collection::add);
return collection;
}
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/hash/CityHash.java b/hutool-core/src/main/java/cn/hutool/core/lang/hash/CityHash.java
index 61c9f9ba6..aad2da056 100644
--- a/hutool-core/src/main/java/cn/hutool/core/lang/hash/CityHash.java
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/hash/CityHash.java
@@ -318,7 +318,7 @@ public class CityHash {
private static long hashLen0to16(byte[] byteArray) {
int len = byteArray.length;
if (len >= 8) {
- long mul = k2 + len * 2;
+ long mul = k2 + len * 2L;
long a = fetch64(byteArray, 0) + k2;
long b = fetch64(byteArray, len - 8);
long c = rotate(b, 37) * mul + a;
@@ -344,7 +344,7 @@ public class CityHash {
// This probably works well for 16-byte strings as well, but it may be overkill in that case.
private static long hashLen17to32(byte[] byteArray) {
int len = byteArray.length;
- long mul = k2 + len * 2;
+ long mul = k2 + len * 2L;
long a = fetch64(byteArray, 0) * k1;
long b = fetch64(byteArray, 8);
long c = fetch64(byteArray, len - 8) * mul;
@@ -355,7 +355,7 @@ public class CityHash {
private static long hashLen33to64(byte[] byteArray) {
int len = byteArray.length;
- long mul = k2 + len * 2;
+ long mul = k2 + len * 2L;
long a = fetch64(byteArray, 0) * k2;
long b = fetch64(byteArray, 8);
long c = fetch64(byteArray, len - 24);
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash.java b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash.java
new file mode 100644
index 000000000..8ad0a9e35
--- /dev/null
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash.java
@@ -0,0 +1,19 @@
+package cn.hutool.core.lang.hash;
+
+/**
+ * Hash计算接口
+ *
+ * @param 被计算hash的对象类型
+ * @author looly
+ * @since 5.7.15
+ */
+@FunctionalInterface
+public interface Hash {
+ /**
+ * 计算Hash值
+ *
+ * @param t 对象
+ * @return hash
+ */
+ Number hash(T t);
+}
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash128.java b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash128.java
index af5dfc496..b16b4c9ce 100644
--- a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash128.java
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash128.java
@@ -8,7 +8,8 @@ package cn.hutool.core.lang.hash;
* @since 5.2.5
*/
@FunctionalInterface
-public interface Hash128 {
+public interface Hash128 extends Hash{
+
/**
* 计算Hash值
*
@@ -16,4 +17,9 @@ public interface Hash128 {
* @return hash
*/
Number128 hash128(T t);
-}
\ No newline at end of file
+
+ @Override
+ default Number hash(T t){
+ return hash128(t);
+ }
+}
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash32.java b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash32.java
index b0aaa8ced..7a9016697 100644
--- a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash32.java
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash32.java
@@ -8,7 +8,7 @@ package cn.hutool.core.lang.hash;
* @since 5.2.5
*/
@FunctionalInterface
-public interface Hash32 {
+public interface Hash32 extends Hash{
/**
* 计算Hash值
*
@@ -16,4 +16,9 @@ public interface Hash32 {
* @return hash
*/
int hash32(T t);
-}
\ No newline at end of file
+
+ @Override
+ default Number hash(T t){
+ return hash32(t);
+ }
+}
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash64.java b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash64.java
index 9feac2969..61a50e4bd 100644
--- a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash64.java
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash64.java
@@ -8,7 +8,7 @@ package cn.hutool.core.lang.hash;
* @since 5.2.5
*/
@FunctionalInterface
-public interface Hash64 {
+public interface Hash64 extends Hash{
/**
* 计算Hash值
*
@@ -16,4 +16,9 @@ public interface Hash64 {
* @return hash
*/
long hash64(T t);
-}
\ No newline at end of file
+
+ @Override
+ default Number hash(T t){
+ return hash64(t);
+ }
+}
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Number128.java b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Number128.java
index 9af5bad4d..4f6301095 100644
--- a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Number128.java
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Number128.java
@@ -6,7 +6,8 @@ package cn.hutool.core.lang.hash;
* @author hexiufeng
* @since 5.2.5
*/
-public class Number128 {
+public class Number128 extends Number{
+ private static final long serialVersionUID = 1L;
private long lowValue;
private long highValue;
@@ -41,4 +42,24 @@ public class Number128 {
public long[] getLongArray() {
return new long[]{lowValue, highValue};
}
+
+ @Override
+ public int intValue() {
+ return (int) longValue();
+ }
+
+ @Override
+ public long longValue() {
+ return this.lowValue;
+ }
+
+ @Override
+ public float floatValue() {
+ return longValue();
+ }
+
+ @Override
+ public double doubleValue() {
+ return longValue();
+ }
}