
失败的代码,因为没有考虑数组和集合的情况~ !!!
class FormatPrintf{
public static<T> void print(T t)throws Exception{
if(isPrimitive(t.getClass())){
System.out.println(t);
}
System.out.println("{");
dfs(t,0);
System.out.println("}");
}
private static<T> void dfs(T t,int def)throws Exception{
def++;
Class<?> clazz = t.getClass();
Field[] fields=clazz.getDeclaredFields();
for(Field f:fields){
f.setAccessible(true);
Object obj=f.get(t);
printfSpace(def);
System.out.print(f.getName());
if(obj==null||isPrimitive(obj.getClass())){
System.out.println(": "+obj);
}else{
System.out.println(": {");
dfs(obj,def);
printfSpace(def);
System.out.println("}");
}
}
}
private static<T> boolean isPrimitive(Class<T> clazz) {
if (clazz.isPrimitive() || clazz.getSuperclass() == Number.class
|| clazz == Boolean.class || clazz == String.class
|| clazz == Date.class) {
return true;
}else {
return false;
}
}
private static void printfSpace(int def){
for(int i=0;i<def;i++){
System.out.print("\t");
}
}
}
调用printf方法
{
id: 12134
name: 姓名
address: {
id: 1
detal: 地址
empty: null
point: {
id: 123
ad: ad
date: Wed Aug 19 16:58:15 CST 2020
}
}
}