属性null转“”;属性null转空字符串


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()

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM