public static void main(String[] args) {
/**
* 随便new一个类
*/
OfflineShopInfo offlineShopInfo = new OfflineShopInfo();
/**
*调用组装方法
*/
Object trd = trd(offlineShopInfo);
/**
*json序列化
*/
String str = JSON.toJSONString(trd, SerializerFeature.WriteMapNullValue);
System.out.println("trd = " + str);
}
private static String[] types = {"java.lang.Integer",
"java.lang.Double",
"java.lang.Float",
"java.lang.Long",
"java.lang.Short",
"java.lang.Byte",
"java.lang.Boolean",
"java.lang.Character",
"java.lang.String",
"int","double","long","short","byte","boolean","char","float"};
private static List<String> list;
static {
list = Arrays.asList(types);
}
public static Object trd(Object object){
if (object == null){
return object;
}
Class<?> c = object.getClass();
Field[] fields = c.getDeclaredFields();
for (Field field:fields
) {
if (!list.contains(field.getType().getName())){
field.setAccessible(true);
try {
if (field.getType().getName().equals("java.util.List")){
Type genericType = field.getGenericType();
if (genericType instanceof ParameterizedType){
ParameterizedType pt = (ParameterizedType) genericType;
Class<?> aClass = (Class<?>)pt.getActualTypeArguments()[0];
Object o = aClass.newInstance();
Object trd = trd(o);
List<Object> lists = new ArrayList();
lists.add(trd);
field.set(object,lists);
}
}else {
Class<?> aClass = Class.forName(field.getType().getName());
Object o = aClass.newInstance();
Object trd = trd(o);
field.set(object,trd);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
return object;
}
反射创建空对象
最新推荐文章于 2024-09-27 00:45:01 发布