package xyz.yhsj.yhutils.logutils.utils;
import java.lang.reflect.Field;
/**
* Created by pengwei08 on 2015/7/20.
*/
public class SystemUtil {
/**
* 获取StackTraceElement对象
* @return
*/
public static StackTraceElement getStackTrace(){
return Thread.currentThread().getStackTrace()[4];
}
// 基本数据类型
private final static String[] types = {"int", "java.lang.String", "boolean", "char",
"float", "double", "long", "short", "byte"};
/**
* 将对象转化为String
*
* @param object
* @return
*/
public static <T> String objectToString(T object) {
if (object == null) {
return "Object{object is null}";
}
if (object.toString().startsWith(object.getClass().getName() + "@")) {
StringBuilder builder = new StringBuilder(object.getClass().getSimpleName() + "{");
Field[] fields = object.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
boolean flag = false;
for (String type : types) {
if (field.getType().getName().equalsIgnoreCase(type)) {
flag = true;
Object value = null;
try {
value = field.get(object);
} catch (IllegalAccessException e) {
value = e;
}finally {
builder.append(String.format("%s=%s, ", field.getName(),
value == null ? "null" : value.toString()));
break;
}
}
}
if(!flag){
builder.append(String.format("%s=%s, ", field.getName(), "Object"));
}
}
return builder.replace(builder.length() - 2, builder.length() - 1, "}").toString();
} else {
return object.toString();
}
}
}