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");