package com.peony.common.util; import java.lang.reflect.Field; import java.util.Arrays; /** * @projectName: server * @package: com.peony.common.util * @className: ObjFieldUtil * @author: zy * @description: * @date: 2022-04-07 22:32 */ public class ObjFieldUtil { public static <T> T nullToStr(T t){ try{ Class<?> aClass = t.getClass(); Field[] declaredFields = aClass.getDeclaredFields(); for(Field f:declaredFields){ f.setAccessible(true); Object o = f.get(t); if(o==null){ if(f.getType().getName().contains("String")){ f.set(t,""); } } } }catch (Exception e){ e.printStackTrace(); } return t; } }
对象属性统一进行特殊操作,属性解密
public static void decode(Object o){ try{ if(o==null){ return ; } if(o instanceof List){ for (Object o1 : (List) o) { decode(o1); } }else{ Class<?> aClass = o.getClass(); Field[] declaredFields = aClass.getDeclaredFields(); for(Field f:declaredFields){ f.setAccessible(true); Object o2 = f.get(o); if(o2!=null){ if(o2 instanceof String){ f.set(o,NewAESUtil.decryptData(o2.toString())); } if(o2 instanceof List){ for (Object o1 : (List) o2) { decode(o1); } } if(o2.getClass().getName().contains("com.peony.")){ decode(o2); } } } } }catch (Exception e){ e.printStackTrace(); } }
反射判断class是否存在继承,判断两个class对象
for(Field f:declaredFields){ Class<?> type = f.getType(); if(f.getType().isAssignableFrom(List.class))
父类在前
List.class.isAssignableFrom(new ArrayList<>().getClass())
获取对象泛型,获取泛型
f.getGenericType().getTypeName(); Type actualTypeArgument = ((ParameterizedTypeImpl) f.getGenericType()).getActualTypeArguments()[0];
Parameter获取参数泛型
List<Parameter> collect
ParameterizedTypeImpl parameterizedType = (ParameterizedTypeImpl) collect.get(0).getParameterizedType();
String typeName1 = parameterizedType.getActualTypeArguments()[0].getTypeName()
通过class获取实例对象
通过class获取对象实例
clazz.newInstance()