1. 字符类型转换
String.valueOf(T)和T.toString()的区别: 当参数T为空的时候,String.valueOf(T)会返回一个“null”字符串,T.toString()会报空指针异常;
字符类型数值相加:new BigDecimal(str1).add(new BigDecimal(str2)).toString())
2. 将Object转换为List
public static <T> List<T> objToList(Object obj, Class<T> clazz)
{
List<T> result = new ArrayList<T>();
if(obj instanceof List<?>)
{
for (Object o : (List<?>) obj)
{
result.add(clazz.cast(o));
}
return result;
}
return null;
}
3. Mysql数据库中的date、time类型在dubbo反序列化传输时遇见的bug
推荐统一用 java.util.Date 进行接收
问题:用 java.sql 包下的日期格式进行dubbo传输时,如果此日期属性为空,则会报如下错误()
com.caucho.hessian.io.HessianServiceException: 具体哪个实体的属性:leaseEndDate: java.sql.Date cannot be assigned from null 或者 java.sql.Time cannot be assigned from null
解决方法:服务端操作数据库统一用 java.util.Date (是 java.sql.Date 和 java.sql.Time 的父类) 进行接收,如果接口端需要展示时间类型,可以使用 SimpleDateFormat 指定类型转换
参考链接
4. Object类型转换为指定类型
通过使用com.fasterxml.jackson.databind.ObjectMapper的ObjectMapper对象进行转换
<!-- 源码中的方法 -->
<!--
fromValue:需要转换的对象(可以为Object类型)
toValueType:指定转换的数据类型
-->
public <T> T convertValue(Object fromValue, Class<T> toValueType) throws IllegalArgumentException {
return this._convert(fromValue, this._typeFactory.constructType(toValueType));
}
<!-- 使用 -->
ObjectMapper objectMapper = new ObjectMapper();
A objA = objectMapper.convertValue(object, A.class);
5. Map转换为一个实体类对象
使用 fastjson
JSON.parseObject(JSON.toJSONString(Map<String, ? extends Object>), Class<T> cls);
使用org.apache.commons.beanutils.BeanUtils
工具类
BeanUtils.populate(Object bean, Map<String, ? extends Object> properties)
网友评论