package com.fanruan.api.conf; import com.fanruan.api.conf.impl.ObjConf; import com.fanruan.api.conf.impl.ObjectColConf; import com.fanruan.api.conf.impl.ObjectMapConf; import com.fanruan.api.conf.impl.SimConf; import com.fr.config.holder.Conf; import com.fr.config.holder.impl.ColConf; import java.util.Collection; import java.util.Map; /** * @author richie * @version 10.0 * Created by richie on 2019-08-15 * 配置对象操作类 * TODO:补充单元测试 */ @SuppressWarnings("unchecked") public class HolderKit { /** * 初始化一个基本对象类型的配置 * * @param t 初始值 * @param <T> 类型 * @return 配置对象 */ public static <T> Conf<T> simple(T t) { return new SimConf<>(t); } /** * 初始化一个对象类型的配置 * * @param t 初始值 * @param type 对象class类 * @param <T> 类型 * @return 配置对象 */ public static <T> Conf<T> obj(T t, Class<T> type) { return new ObjConf<>(t, type); } /** * 初始化一个集合类型的配置 * * @param collection 初始值 * @param type 对象class类型 * @param <T> 类型 * @return 配置对象 */ public static <T> ObjectColConf<Collection<T>> objCollection(Collection<T> collection, Class<T> type) { return new ObjectColConf<>(collection, type); } /** * 初始化一个集合类型的配置 * * @param collection 初始值 * @param type 对象class类型 * @param order 是否是有序的配置 * @param <T> 类型 * @return 配置对象 */ public static <T> ObjectColConf<Collection<T>> objCollection(Collection<T> collection, Class<T> type, boolean order) { return new ObjectColConf<>(collection, type, order); } /** * 初始化一个字典类型的配置 * * @param map 初始值 * @param keyType 键class类型 * @param valueType 值class类型 * @param <K> 键类型 * @param <V> 值类型 * @return 配置对象 */ public static <K, V> ObjectMapConf<Map<K, V>> objMap(Map<K, V> map, Class<K> keyType, Class<V> valueType) { return new ObjectMapConf<>(map, keyType, valueType); } /** * 初始化一个字典类型的配置 * * @param map 初始值 * @param keyType 键class类型 * @param valueType 值class类型 * @param order 是否是有序配置 * @param <K> 键类型 * @param <V> 值类型 * @return 配置对象 */ public static <K, V> ObjectMapConf<Map<K, V>> objMap(Map<K, V> map, Class<K> keyType, Class<V> valueType, boolean order) { return new ObjectMapConf<>(map, keyType, valueType, order); } /** * 初始化一个集合类型的配置 * * @param collection 集合 * @param valueType 值类型 * @param <K> 类型 * @return 配置对象 */ public static <K> ColConf<Collection<K>> collection(Collection<K> collection, Class<K> valueType) { return new ColConf(collection, valueType); } }