Java 工具类-toString

2018-11-05  本文已影响0人  Yellowtail

前言

Java web系统,难以避免使用大量的第三方jar包,有时会遇到一些对象,没有实现toString()方法
如果我们又想把这个对象打印出来,就比较费劲了:需要自己去调用get方法
如果这个对象没有提供get方法,此时就只能通过反射的方式去打印值了。

我这次就遇到了一个没有提供get方法的对象,打印它的时候,写了一个工具类
在此分享出来

code

/**
 * <br>打印一些没有实现 toString 方法的对象
 * <br>成员变量必须实现了toString 方法,也就是本方法不会实现递归逻辑
 *
 * @param obj  对象实例
 * @param clazz 对象 class
 * @param fieldName  私有成员变量的名称
 * @return
 * @author YellowTail
 * @since 2018-11-02
 */
public static String getString(Object obj, Class<?> clazz, String fieldName) {
    String result = "Failed toString";
    
    try {
        Field valueField = clazz.getDeclaredField(fieldName);
        valueField.setAccessible(true);
        Object object = valueField.get(obj);
        result = object.toString();
    } catch (NoSuchFieldException | SecurityException e) {
        LOGGER.error("class not found, ", e);
    } catch (IllegalArgumentException e) {
        LOGGER.error("IllegalArgumentException, ", e);
    } catch (IllegalAccessException e) {
        LOGGER.error("IllegalAccessException, ", e);
    }
    
    return result;
}

example

String string = LoggerUtils.getString(aggregate, Aggregate.class, "pipeline");
LOGGER.debug("aggregate is {}", string);
上一篇 下一篇

猜你喜欢

热点阅读