From ea9349949b5ce325439e2e57ffd7b43a9ad616e8 Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 12 Apr 2023 00:52:11 +0800 Subject: [PATCH] fix code --- .../hutool/core/date/format/FormatCache.java | 2 +- .../core/lang/mutable/MutableTriple.java | 94 +++++++++++++ .../hutool/core/lang/tuple/Triple.java | 129 ++++++++++++++++++ .../hutool/core/lang/{ => tuple}/Tuple.java | 4 +- .../hutool/core/lang/tuple/package-info.java | 22 +++ .../hutool/core/tuple/ImmutableTriple.java | 77 ----------- .../hutool/core/tuple/MutableTriple.java | 104 -------------- .../org/dromara/hutool/core/tuple/Triple.java | 63 --------- .../dromara/hutool/core/lang/TupleTest.java | 1 + .../hutool/core/lang/func/LambdaUtilTest.java | 2 +- .../hutool/core/lang/tuple/TripleTest.java | 45 ++++++ .../dromara/hutool/core/tuple/TripleTest.java | 23 ---- 12 files changed, 295 insertions(+), 271 deletions(-) create mode 100644 hutool-core/src/main/java/org/dromara/hutool/core/lang/mutable/MutableTriple.java create mode 100644 hutool-core/src/main/java/org/dromara/hutool/core/lang/tuple/Triple.java rename hutool-core/src/main/java/org/dromara/hutool/core/lang/{ => tuple}/Tuple.java (97%) create mode 100644 hutool-core/src/main/java/org/dromara/hutool/core/lang/tuple/package-info.java delete mode 100644 hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java delete mode 100644 hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java delete mode 100644 hutool-core/src/main/java/org/dromara/hutool/core/tuple/Triple.java create mode 100644 hutool-core/src/test/java/org/dromara/hutool/core/lang/tuple/TripleTest.java delete mode 100644 hutool-core/src/test/java/org/dromara/hutool/core/tuple/TripleTest.java diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/FormatCache.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/FormatCache.java index e9473441a..496272a73 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/FormatCache.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/FormatCache.java @@ -13,7 +13,7 @@ package org.dromara.hutool.core.date.format; import org.dromara.hutool.core.lang.Assert; -import org.dromara.hutool.core.lang.Tuple; +import org.dromara.hutool.core.lang.tuple.Tuple; import org.dromara.hutool.core.map.SafeConcurrentHashMap; import java.text.DateFormat; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/lang/mutable/MutableTriple.java b/hutool-core/src/main/java/org/dromara/hutool/core/lang/mutable/MutableTriple.java new file mode 100644 index 000000000..5b7426f48 --- /dev/null +++ b/hutool-core/src/main/java/org/dromara/hutool/core/lang/mutable/MutableTriple.java @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2023 looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +package org.dromara.hutool.core.lang.mutable; + +import org.dromara.hutool.core.lang.tuple.Triple; + +/** + * 可变三元组对象 + * + * @param 左值类型 + * @param 中值类型 + * @param 右值类型 + * @author kirno7 + * @since 6.0.0 + */ +public class MutableTriple extends Triple implements Mutable>{ + private static final long serialVersionUID = 1L; + + /** + * 构建MutableTriple对象 + * + * @param 左值类型 + * @param 中值类型 + * @param 右值类型 + * @param left 左值 + * @param middle 中值 + * @param right 右值 + * @return MutableTriple + * @since 6.0.0 + */ + public static MutableTriple of(final L left, final M middle, final R right) { + return new MutableTriple<>(left, middle, right); + } + + /** + * 构造 + * + * @param left 左值 + * @param middle 中值 + * @param right 右值 + */ + public MutableTriple(final L left, final M middle, final R right) { + super(left, middle, right); + } + + @Override + public MutableTriple get() { + return this; + } + + @Override + public void set(final MutableTriple value) { + this.left = value.left; + this.middle = value.middle; + this.right = value.right; + } + + /** + * 设置左值 + * + * @param left 左值 + */ + public void setLeft(final L left) { + this.left = left; + } + + /** + * 设置中值 + * + * @param middle 中值 + */ + public void setMiddle(final M middle) { + this.middle = middle; + } + + /** + * 设置右值 + * + * @param right 右值 + */ + public void setRight(final R right) { + this.right = right; + } +} diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/lang/tuple/Triple.java b/hutool-core/src/main/java/org/dromara/hutool/core/lang/tuple/Triple.java new file mode 100644 index 000000000..be250c386 --- /dev/null +++ b/hutool-core/src/main/java/org/dromara/hutool/core/lang/tuple/Triple.java @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2023 looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +package org.dromara.hutool.core.lang.tuple; + +import org.dromara.hutool.core.exceptions.CloneRuntimeException; + +import java.io.Serializable; +import java.util.Objects; + +/** + * 不可变三元组对象 + * + * @param 左值类型 + * @param 中值类型 + * @param 右值类型 + * @author kirno7 + * @since 6.0.0 + */ +public class Triple implements Serializable, Cloneable { + private static final long serialVersionUID = 1L; + + protected L left; + protected M middle; + protected R right; + + /** + * 构建ImmutableTriple对象 + * + * @param 左值类型 + * @param 中值类型 + * @param 右值类型 + * @param left 左值 + * @param middle 中值 + * @param right 右值 + * @return ImmutableTriple + * @since 6.0.0 + */ + public static Triple of(final L left, final M middle, final R right) { + return new Triple<>(left, middle, right); + } + + /** + * 构造 + * + * @param left 左值 + * @param middle 中值 + * @param right 右值 + */ + public Triple(final L left, final M middle, final R right) { + this.left = left; + this.middle = middle; + this.right = right; + } + + // region ----- getXXX + /** + * 获取左值 + * + * @return 左值 + */ + public L getLeft() { + return this.left; + } + + /** + * 获取中值 + * + * @return 中值 + */ + public M getMiddle() { + return this.middle; + } + + /** + * 获取右值 + * + * @return 右值 + */ + public R getRight() { + return this.right; + } + // endregion + + @Override + public boolean equals(final Object o) { + if (this == o) { + return true; + } + if (o instanceof Triple) { + final Triple triple = (Triple) o; + return Objects.equals(getLeft(), triple.getLeft()) && + Objects.equals(getMiddle(), triple.getMiddle()) && + Objects.equals(getRight(), triple.getRight()); + } + return false; + } + + @Override + public int hashCode() { + return Objects.hashCode(getLeft()) + ^ Objects.hashCode(getMiddle()) + ^ Objects.hashCode(getRight()); + } + + @Override + public String toString() { + return "Triple {" + "left=" + getLeft() + ", middle=" + getMiddle() + ", right=" + getRight() + '}'; + } + + @SuppressWarnings("unchecked") + @Override + public Triple clone() { + try { + return (Triple) super.clone(); + } catch (final CloneNotSupportedException e) { + throw new CloneRuntimeException(e); + } + } +} diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/lang/Tuple.java b/hutool-core/src/main/java/org/dromara/hutool/core/lang/tuple/Tuple.java similarity index 97% rename from hutool-core/src/main/java/org/dromara/hutool/core/lang/Tuple.java rename to hutool-core/src/main/java/org/dromara/hutool/core/lang/tuple/Tuple.java index 232a51fe5..50646e11a 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/lang/Tuple.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/lang/tuple/Tuple.java @@ -10,7 +10,7 @@ * See the Mulan PSL v2 for more details. */ -package org.dromara.hutool.core.lang; +package org.dromara.hutool.core.lang.tuple; import org.dromara.hutool.core.collection.ListUtil; import org.dromara.hutool.core.collection.iter.ArrayIter; @@ -193,7 +193,7 @@ public class Tuple implements Iterable, Serializable, Cloneable { public Tuple clone() { try { return (Tuple) super.clone(); - } catch (CloneNotSupportedException e) { + } catch (final CloneNotSupportedException e) { throw new CloneRuntimeException(e); } } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/lang/tuple/package-info.java b/hutool-core/src/main/java/org/dromara/hutool/core/lang/tuple/package-info.java new file mode 100644 index 000000000..f2199dd8b --- /dev/null +++ b/hutool-core/src/main/java/org/dromara/hutool/core/lang/tuple/package-info.java @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2023 looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +/** + * 元组相关封装,包括: + *
    + *
  • 类似Python元组的{@link org.dromara.hutool.core.lang.tuple.Tuple}
  • + *
  • 三元组{@link org.dromara.hutool.core.lang.tuple.Triple}
  • + *
+ * + * @author Looly, kirno7 + */ +package org.dromara.hutool.core.lang.tuple; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java deleted file mode 100644 index 8f3019c59..000000000 --- a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java +++ /dev/null @@ -1,77 +0,0 @@ -package org.dromara.hutool.core.tuple; - -/** - * 不可变三元组对象 - * - * @param 左值类型 - * @param 中值类型 - * @param 右值类型 - * @author kirno7 - * @since 6.0.0 - */ -public class ImmutableTriple extends Triple { - private static final long serialVersionUID = 1L; - - protected final L left; - protected final M middle; - protected final R right; - - /** - * 构建ImmutableTriple对象 - * - * @param 左值类型 - * @param 中值类型 - * @param 右值类型 - * @param left 左值 - * @param middle 中值 - * @param right 右值 - * @return ImmutableTriple - * @since 6.0.0 - */ - public static ImmutableTriple of(L left, M middle, R right) { - return new ImmutableTriple<>(left, middle, right); - } - - /** - * 构造 - * - * @param left 左值 - * @param middle 中值 - * @param right 右值 - */ - private ImmutableTriple(L left, M middle, R right) { - this.left = left; - this.middle = middle; - this.right = right; - } - - /** - * 获取左值 - * - * @return 左值 - */ - @Override - public L getLeft() { - return this.left; - } - - /** - * 获取中值 - * - * @return 中值 - */ - @Override - public M getMiddle() { - return this.middle; - } - - /** - * 获取右值 - * - * @return 右值 - */ - @Override - public R getRight() { - return this.right; - } -} diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java deleted file mode 100644 index ad3c205b6..000000000 --- a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java +++ /dev/null @@ -1,104 +0,0 @@ -package org.dromara.hutool.core.tuple; - -/** - * 可变三元组对象 - * - * @param 左值类型 - * @param 中值类型 - * @param 右值类型 - * @author kirno7 - * @since 6.0.0 - */ -public class MutableTriple extends Triple { - private static final long serialVersionUID = 1L; - - protected L left; - protected M middle; - protected R right; - - /** - * 构建MutableTriple对象 - * - * @param 左值类型 - * @param 中值类型 - * @param 右值类型 - * @param left 左值 - * @param middle 中值 - * @param right 右值 - * @return MutableTriple - * @since 6.0.0 - */ - public static MutableTriple of(L left, M middle, R right) { - return new MutableTriple<>(left, middle, right); - } - - /** - * 构造 - * - * @param left 左值 - * @param middle 中值 - * @param right 右值 - */ - private MutableTriple(L left, M middle, R right) { - this.left = left; - this.middle = middle; - this.right = right; - } - - /** - * 获取左值 - * - * @return 左值 - */ - @Override - public L getLeft() { - return this.left; - } - - /** - * 获取中值 - * - * @return 中值 - */ - @Override - public M getMiddle() { - return this.middle; - } - - /** - * 获取右值 - * - * @return 右值 - */ - @Override - public R getRight() { - return this.right; - } - - /** - * 设置左值 - * - * @param left 左值 - */ - public void setLeft(L left) { - this.left = left; - } - - /** - * 设置中值 - * - * @param middle 中值 - */ - public void setMiddle(M middle) { - this.middle = middle; - } - - /** - * 设置右值 - * - * @param right 右值 - */ - public void setRight(R right) { - this.right = right; - } -} diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/Triple.java b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/Triple.java deleted file mode 100644 index 2b2a9b006..000000000 --- a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/Triple.java +++ /dev/null @@ -1,63 +0,0 @@ -package org.dromara.hutool.core.tuple; - -import java.io.Serializable; -import java.util.Objects; - -/** - * 三元组抽象类 - * - * @param 左值类型 - * @param 中值类型 - * @param 右值类型 - * @author kirno7 - * @since 6.0.0 - */ -public abstract class Triple implements Serializable { - private static final long serialVersionUID = 1L; - - /** - * 获取左值 - * - * @return 左值 - */ - public abstract L getLeft(); - - /** - * 获取中值 - * - * @return 中值 - */ - public abstract M getMiddle(); - - /** - * 获取右值 - * - * @return 右值 - */ - public abstract R getRight(); - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o instanceof ImmutableTriple) { - ImmutableTriple triple = (ImmutableTriple) o; - return Objects.equals(getLeft(), triple.getLeft()) && - Objects.equals(getMiddle(), triple.getMiddle()) && - Objects.equals(getRight(), triple.getRight()); - } - return false; - } - - @Override - public int hashCode() { - return Objects.hashCode(getLeft()) ^ Objects.hashCode(getMiddle()) ^ Objects.hashCode(getRight()); - } - - @Override - public String toString() { - return "Triple {" + "left=" + getLeft() + ", middle=" + getMiddle() + ", right=" + getRight() + '}'; - } -} - diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/lang/TupleTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/lang/TupleTest.java index 218f0db60..8ab9d53f4 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/lang/TupleTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/lang/TupleTest.java @@ -1,5 +1,6 @@ package org.dromara.hutool.core.lang; +import org.dromara.hutool.core.lang.tuple.Tuple; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/lang/func/LambdaUtilTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/lang/func/LambdaUtilTest.java index 1b21b1648..b7ea25a06 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/lang/func/LambdaUtilTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/lang/func/LambdaUtilTest.java @@ -1,7 +1,7 @@ package org.dromara.hutool.core.lang.func; import org.dromara.hutool.core.func.*; -import org.dromara.hutool.core.lang.Tuple; +import org.dromara.hutool.core.lang.tuple.Tuple; import org.dromara.hutool.core.reflect.MethodUtil; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/lang/tuple/TripleTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/lang/tuple/TripleTest.java new file mode 100644 index 000000000..c0dedb59f --- /dev/null +++ b/hutool-core/src/test/java/org/dromara/hutool/core/lang/tuple/TripleTest.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2023 looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +package org.dromara.hutool.core.lang.tuple; + +import org.dromara.hutool.core.lang.mutable.MutableTriple; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +/** + * {@link Triple} 三元组单元测试 + * {@link MutableTriple} 三元组单元测试 + * + * @author kirno7 + */ +public class TripleTest { + + @Test + public void mutableTripleTest() { + final MutableTriple mutableTriple = MutableTriple + .of("1", "1", "1"); + Assertions.assertEquals("Triple {left=1, middle=1, right=1}", mutableTriple.toString()); + + mutableTriple.setLeft("2"); + mutableTriple.setMiddle("2"); + mutableTriple.setRight("2"); + Assertions.assertEquals("Triple {left=2, middle=2, right=2}", mutableTriple.toString()); + } + + @Test + public void tripleTest() { + final Triple triple = Triple + .of("3", "3", "3"); + Assertions.assertEquals("Triple {left=3, middle=3, right=3}", triple.toString()); + } +} diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/tuple/TripleTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/tuple/TripleTest.java deleted file mode 100644 index 2402e6ad5..000000000 --- a/hutool-core/src/test/java/org/dromara/hutool/core/tuple/TripleTest.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.dromara.hutool.core.tuple; - -import org.junit.jupiter.api.Test; - -/** - * {@link ImmutableTriple} 三元组单元测试 - * {@link MutableTriple} 三元组单元测试 - * - * @author kirno7 - */ -public class TripleTest { - @Test - public void tripleTest() { - MutableTriple mutableTriple = MutableTriple.of("1", "1", "1"); - System.out.println(mutableTriple); - mutableTriple.setLeft("2"); - mutableTriple.setMiddle("2"); - mutableTriple.setRight("2"); - System.out.println(mutableTriple); - ImmutableTriple immutableTriple = ImmutableTriple.of("3", "3", "3"); - System.out.println(immutableTriple); - } -}