import com.alibaba.fastjson.JSON; import java.util.HashMap; /** * 链式HashMap * Tkv: typed key value * * @author Luyao */ public class Tkv<K, V> extends HashMap<K, V> { /** * 创建实例 * * @param key 键,泛型 * @param value 值,任意类型 * @return Kv实例 */ public static <K> Kv<K, Object> ofAny(K key, Object value) { return new Kv<K, Object>().add(key, value); } /** * 创建实例 * * @param key 键 * @param value 值 * @param <K> 键类型,根据第一个键的数据类型自动决定整体的键类型 * @param <V> 值类型,根据第一个值的数据类型自动决定整体的值类型 * @return Kv实例 */ public static <K, V> Tkv<K, V> of(K key, V value) { return new Tkv<K, V>().add(key, value); } /** * 链式添加键值对 * * @param key 键 * @param value 值 * @return 当前对象 */ public Tkv<K, V> add(K key, V value) { put(key, value); return this; } /** * 获取值 * 自动根据接收变量定义的类型进行强转 * * @param key 键 * @param <T> 值类型 * @return 值 */ public <T> T getAs(K key) { return (T) get(key); } /** * 将当前对象转JSON字符串 * * @return 当前对象JSON */ public String toJson() { return JSON.toJSONString(this); } }
使用:
// 强类型 Tkv<String, String> params = Tkv.of("id", "100") .add("name", "yy") .add("age", "16"); String name = params.get("name"); String body = params.toJson(); // 弱类型 Tkv<Object, Object> params1 = Tkv.ofAny("id", 100) .add("name", "yy") .add("age", 16); int age = params1.getAs("age");