前言
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);
网友评论