• 对象信息打印工具类


    在写代码的时候我们经常会需要打印出一些重要的对象信息,但是我们又不可能每一个都用字符串append,所以这个工具类很有必要的,参数就是任何一个对象,输出就是其所有属性以及父类中的属性都要打印出来

     1 package com.ninefbank.smallpay.clear.util;
     2 
     3 import java.lang.reflect.Field;
     4 import java.text.SimpleDateFormat;
     5 import java.util.Date;
     6 import java.util.HashMap;
     7 import java.util.Map;
     8 
     9 import org.slf4j.Logger;
    10 import org.slf4j.LoggerFactory;
    11 
    12 import com.ninefbank.smallpay.clear.constant.ClearConstants;
    13 
    14 /**
    15  * 反射工具类
    16  * 
    17  */
    18 public class ReflectUtil {
    19     
    20     private static Logger logger = LoggerFactory.getLogger(ReflectUtil.class);
    21 
    22     /**
    23      * 获取当前对象以及对象父类的属性和属性值
    24      * @return
    25      * 
    26      */
    27     public static Map<String, Object> getCurrAndParentFields(Object paramObject){
    28         
    29         if(paramObject == null) return null;
    30         
    31         Map<String, Object> paramsMap = new HashMap<String, Object>();
    32         Class<? extends Object> paramClass = paramObject.getClass();
    33         Field[] fields = paramClass.getDeclaredFields();
    34         for (Field field : fields) {
    35             try {
    36                 field.setAccessible(true);
    37                 if(field.get(paramObject) instanceof Date){
    38                     paramsMap.put(field.getName(), new SimpleDateFormat(ClearConstants.DATE_FORMAT_DEFAULT).format(field.get(paramObject)));
    39                 }else{
    40                     paramsMap.put(field.getName(),field.get(paramObject));
    41                 }
    42                 Class<?> paramsSuperclass = paramClass.getSuperclass();
    43                 Field[] declaredFields = paramsSuperclass.getDeclaredFields();
    44                 for (Field superField : declaredFields) {
    45                     superField.setAccessible(true);
    46                     if(superField.get(paramObject) instanceof Date){
    47                         paramsMap.put(superField.getName(), new SimpleDateFormat(ClearConstants.DATE_FORMAT_DEFAULT).format(superField.get(paramObject)));
    48                     }else{
    49                         paramsMap.put(superField.getName(), superField.get(paramObject));
    50                     }
    51                         
    52                 }
    53             } catch (Exception e) {
    54                 logger.info("反射获取对象以及父类对象参数失败",e);
    55             } 
    56         }
    57         return paramsMap;
    58     }
    59     
    60     /**
    61      * 获取当前对象的属性和属性值
    62      * @param paramObject
    63      * @return
    64      * 
    65      */
    66     public static Map<String, Object> getCurrFields(Object paramObject){
    67         Map<String, Object> paramsMap = new HashMap<String, Object>();
    68         if(paramObject != null){
    69             Class<? extends Object> paramClass = paramObject.getClass();
    70             Field[] fields = paramClass.getDeclaredFields();
    71             for (Field field : fields) {
    72                 try {
    73                     field.setAccessible(true);
    74                     paramsMap.put(field.getName(),field.get(paramObject));
    75                 } catch (Exception e) {
    76                     logger.info("反射获取当前类的参数失败",e);
    77                 } 
    78             }
    79         }
    80         return paramsMap;
    81     }
    82     
    83 }

    调用的时候直接像这样就可以了:

    logger.info("请求参数:{}", ReflectUtil.getCurrAndParentFields(recordVo));

  • 相关阅读:
    C Socket编程之Connect超时 (转)
    【c#】设置Socket连接、接收超时(转)
    socket测试远程地址能否连接并为连接设置超时(转)
    ZedGraph右键菜单怎样禁止它弹出(转)
    赚钱本身就是人生目的
    如果一个女人喜欢你,又不跟你在一起,而且只跟你很暧昧,那代表什么
    LayoutInflater的使用
    Android应用程序的生命周期
    Android的系统服务一览
    Android系统服务-简介
  • 原文地址:https://www.cnblogs.com/sailormoon/p/7890630.html
Copyright © 2020-2023  润新知