package org.voovan.tools;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 对象工具类
*
* @author helyho
*
* Voovan Framework.
* WebSite: https://github.com/helyho/Voovan
* Licence: Apache v2 License
*/
public class TObject {
/**
* 类型转换
* @param <T> 范型
* @param obj 被转换对象
* @return 转换后的对象
*/
@SuppressWarnings("unchecked")
public static <T> T cast(Object obj){
return (T)obj;
}
/**
* 转换成指定类型
* @param <T> 范型
* @param obj 被转换对象
* @param t 指定的类型
* @return 转换后的对象
*/
@SuppressWarnings("unchecked")
public static <T> T cast(Object obj,Class<T> t){
return (T)obj;
}
/**
* 空值默认值
* @param <T> 范型
* @param source 检测对象
* @param defValue null 值替换值
* @return 如果非 null 则返回 source,如果为 null 则返回 defValue。
*/
public static <T>T nullDefault(T source,T defValue){
return source!=null?source:defValue;
}
/**
* 初始化一个 List
* @param objs List 列表的每一个元素
* @return 初始化完成的List对象
*/
@SuppressWarnings("rawtypes")
public static List asList(Object ...objs){
ArrayList<Object> list = new ArrayList<Object>();
for(Object obj:objs){
list.add(obj);
}
return list;
}
/**
* 初始化一个 Map
* @param objs 每两个参数组成一个键值对,来初始化一个 Map. 如:key1,value1,key2,value2.....
* @return 初始化完成的Map对象
*/
@SuppressWarnings("rawtypes")
public static Map asMap(Object ...objs){
HashMap<Object,Object> map = new HashMap<Object,Object>();
for(int i=1;i<objs.length;i+=2){
map.put(objs[i-1], objs[i]);
}
return map;
}
/**
* 将 Map 的值转换成 List
* @param map 需转换的 Map 对象
* @return 转后的 Value 的 list
*/
public static List<?> mapValueToList(Map<?,?> map){
ArrayList<Object> result = new ArrayList<Object>();
for(Map.Entry<?,?> entry : map.entrySet()){
result.add(entry.getValue());
}
return result;
}
/**
* 将 Map 的值转换成 List
* @param map 需转换的 Map 对象
* @return 转后的 Value 的 list
*/
public static List<?> mapKeyToList(Map<?,?> map){
ArrayList<Object> result = new ArrayList<Object>();
for(Map.Entry<?,?> entry : map.entrySet()){
result.add(entry.getKey());
}
return result;
}
/**
* 将数组转换成 Map
* key 位置坐标
* value 数组值
* @param objs 待转换的数组
* @return 转换后的 Map
*/
public static Map<String, Object> arrayToMap(Object[] objs){
HashMap<String ,Object> arrayMap = new HashMap<String ,Object>();
for(int i=0;i<objs.length;i++){
arrayMap.put(Integer.toString(i+1), objs[i]);
}
return arrayMap;
}
}