ObjectUtils.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. package com.mixsmart.utils;
  2. import java.beans.PropertyDescriptor;
  3. import java.lang.reflect.Field;
  4. import java.lang.reflect.Method;
  5. import java.lang.reflect.Modifier;
  6. import java.net.URLDecoder;
  7. import java.util.HashMap;
  8. import java.util.Map;
  9. /**
  10. * 简单对象工具类
  11. *
  12. * @author lmq
  13. * @version 1.0
  14. * @since 1.0
  15. * 2015年8月22日
  16. */
  17. public class ObjectUtils {
  18. /**
  19. * 根据内容进行数据类型转换
  20. * <p>如:字符串“5”转换之后变成整型5</p>
  21. *
  22. * @param value
  23. * @return 转换后的值
  24. */
  25. public static Object covertDataType(Object value) {
  26. Object obj = null;
  27. String valueStr = value.toString();
  28. if (StringUtils.isNotEmpty(valueStr)) {
  29. if (StringUtils.isInteger(valueStr)) {
  30. obj = Integer.parseInt(valueStr);
  31. } else if (StringUtils.isDecimal(valueStr)) {
  32. obj = Double.parseDouble(valueStr);
  33. } else {
  34. obj = value;
  35. }
  36. } else {
  37. obj = value;
  38. }
  39. return obj;
  40. }
  41. /**
  42. * boolean型转化为整型 <br />
  43. * 转换依据是:true--1;false--0
  44. *
  45. * @param value
  46. * @return 返回1或0
  47. */
  48. public static int boolean2Int(boolean value) {
  49. return value ? 1 : 0;
  50. }
  51. /**
  52. * boolean型转化为String <br />
  53. * 转换依据是:true--"1";false--"0"
  54. *
  55. * @param value
  56. * @return 返回“1”或“0”
  57. */
  58. public static String boolean2String(boolean value) {
  59. return value ? "1" : "0";
  60. }
  61. /**
  62. * int型转化为boolean <br />
  63. * 转换依据是:1--true;非1--false
  64. *
  65. * @param value
  66. * @return 返回true或false
  67. */
  68. public static boolean int2Boolean(int value) {
  69. return value == 1;
  70. }
  71. /**
  72. * Strng型转化为boolean <br />
  73. * 转换依据是:"1"--true;非"1"--false
  74. *
  75. * @param value
  76. * @return 返回true或false
  77. */
  78. public static boolean string2Boolean(String value) {
  79. return "1".equals(value);
  80. }
  81. /**
  82. * 简单Bean对象转换为Map对象;
  83. * <p>转换规则是:实例属性作为Map的key,实例属性对应的值作为Map对象的value.</p>
  84. * <p>注:当属性对应的值为空(null或"")时,实例对应的属性不会放到Map对象中;既:属性对应的值为空时不转换.</p>
  85. *
  86. * @param objBean 简单对象实例
  87. * @return 返回转换后的Map对象
  88. */
  89. public static Map<String, Object> simpleBean2Map(Object objBean) {
  90. if (null == objBean) {
  91. return null;
  92. }
  93. Class<?> clazz = objBean.getClass();
  94. Map<String, Object> maps = new HashMap<String, Object>();
  95. convert2Map(objBean, clazz, maps);
  96. return (maps.isEmpty() ? null : maps);
  97. }
  98. /**
  99. * 对象转换为Map
  100. *
  101. * @param objBean 对象实例
  102. * @param clazz 对象类
  103. * @param maps 转换后的Map对象
  104. */
  105. private static void convert2Map(Object objBean, Class<?> clazz, Map<String, Object> maps) {
  106. Field[] fields = clazz.getDeclaredFields();
  107. if (null == fields || fields.length == 0) {
  108. return;
  109. }
  110. try {
  111. for (Field field : fields) {
  112. if (Modifier.isStatic(field.getModifiers()) || Modifier.isFinal(field.getModifiers())) {
  113. continue;
  114. }
  115. String fieldName = field.getName();
  116. PropertyDescriptor propertyDesc = new PropertyDescriptor(fieldName, clazz);
  117. Method method = propertyDesc.getReadMethod();
  118. if (null != method) {
  119. Object value = method.invoke(objBean);
  120. if (null != value && StringUtils.isNotEmpty(value.toString())) {
  121. if (null != value && value instanceof String && value.toString().startsWith("%")) {
  122. maps.put(fieldName, URLDecoder.decode(value.toString(), "UTF-8"));
  123. } else if (value.getClass().isArray()) {
  124. Object[] values = (Object[]) value;
  125. if (values.length > 0) {
  126. maps.put(fieldName, value);
  127. }
  128. } else {
  129. maps.put(fieldName, value);
  130. }
  131. }
  132. }
  133. method = null;
  134. }
  135. } catch (SecurityException e) {
  136. e.printStackTrace();
  137. } catch (Exception e) {
  138. e.printStackTrace();
  139. }
  140. Class<?> superClazz = clazz.getSuperclass();
  141. if (null != superClazz) {
  142. convert2Map(objBean, superClazz, maps);
  143. }
  144. }
  145. /**
  146. * 处理Boolean类型数据;对象转Boolean类型
  147. *
  148. * @param value 值
  149. * @return 返回true或false
  150. */
  151. public static boolean handleBoolean(Object value) {
  152. if (null == value) {
  153. return false;
  154. }
  155. try {
  156. return Boolean.parseBoolean(value.toString());
  157. } catch (Exception e) {
  158. return false;
  159. }
  160. }
  161. }