mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
add Converter
This commit is contained in:
parent
887afc8984
commit
77bd2d4336
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
|
@ -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;
|
||||
|
@ -12,8 +12,10 @@
|
||||
|
||||
package org.dromara.hutool.json;
|
||||
|
||||
import org.dromara.hutool.core.lang.Console;
|
||||
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.reflect.TypeReference;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@ -34,4 +36,12 @@ public class IssueI7GPGXTest {
|
||||
final Triple<String, Integer, Boolean> pair = JSONUtil.toBean(a, new TypeReference<Triple<String, Integer, Boolean>>() {});
|
||||
Assertions.assertEquals(hutoolTriple, pair);
|
||||
}
|
||||
|
||||
@Test
|
||||
void tupleToBeanTest() {
|
||||
final Tuple hutoolTriple = Tuple.of("aaa", 123, true);
|
||||
final String a = JSONUtil.toJsonStr(hutoolTriple);
|
||||
final Tuple pair = JSONUtil.toBean(a, Tuple.class);
|
||||
Assertions.assertEquals(hutoolTriple, pair);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user