add Converter

This commit is contained in:
Looly
2023-06-29 18:00:20 +08:00
parent 887afc8984
commit 77bd2d4336
5 changed files with 64 additions and 2 deletions

View File

@@ -17,6 +17,7 @@ import org.dromara.hutool.core.date.DateTime;
import org.dromara.hutool.core.lang.Opt;
import org.dromara.hutool.core.lang.tuple.Pair;
import org.dromara.hutool.core.lang.tuple.Triple;
import org.dromara.hutool.core.lang.tuple.Tuple;
import org.dromara.hutool.core.map.SafeConcurrentHashMap;
import org.dromara.hutool.core.reflect.TypeUtil;
@@ -219,5 +220,6 @@ public class RegisterConverter implements Converter, Serializable {
defaultConverterMap.put(Opt.class, new OptConverter());// since 5.7.16
defaultConverterMap.put(Pair.class, PairConverter.INSTANCE);// since 6.0.0
defaultConverterMap.put(Triple.class, TripleConverter.INSTANCE);// since 6.0.0
defaultConverterMap.put(Tuple.class, TupleConverter.INSTANCE);// since 6.0.0
}
}

View File

@@ -0,0 +1,39 @@
/*
* 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.convert.impl;
import org.dromara.hutool.core.convert.ConvertException;
import org.dromara.hutool.core.convert.Converter;
import org.dromara.hutool.core.lang.tuple.Tuple;
import java.lang.reflect.Type;
/**
* {@link Tuple}转换器
*
* @author looly
* @since 6.0.0
*/
public class TupleConverter implements Converter {
/**
* 单例
*/
public static final TupleConverter INSTANCE = new TupleConverter();
@Override
public Object convert(final Type targetType, final Object value) throws ConvertException {
final Object[] convert = (Object[]) ArrayConverter.INSTANCE.convert(Object[].class, value);
return Tuple.of(convert);
}
}

View File

@@ -26,8 +26,6 @@ import java.util.Objects;
public class Triple<L, M, R> extends Pair<L, R> {
private static final long serialVersionUID = 1L;
protected M middle;
/**
* 构建Triple对象
*
@@ -44,6 +42,8 @@ public class Triple<L, M, R> extends Pair<L, R> {
return new Triple<>(left, middle, right);
}
protected M middle;
/**
* 构造
*

View File

@@ -35,6 +35,17 @@ import java.util.stream.StreamSupport;
public class Tuple implements Iterable<Object>, Serializable, Cloneable {
private static final long serialVersionUID = -7689304393482182157L;
/**
* 构建Tuple对象
*
* @param members 成员数组
* @return Tuple
* @since 6.0.0
*/
public static Tuple of(final Object... members) {
return new Tuple(members);
}
private final Object[] members;
private int hashCode;
private boolean cacheHash;