樹形結構輸出對象聲明的所有屬性鍵值


/**
* 獲得Student對象聲明的所有屬性鍵值
*
* @param obj 當前輸入對象
* @param str 保存樹形結構字符串
* @param level 樹形結構等級編號
* @param isListElement 當前輸入對象是否爲List元素
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
private void getStudentFields(Object obj, StringBuffer str, int level,
boolean isListElement) throws IllegalArgumentException,
IllegalAccessException {
if (obj == null) {
return;
}
Class clazz = obj.getClass();
if (clazz == Student.class) {
str.append(" " + clazz.getSimpleName() + "\n");
level++;
}
// 當前輸入對象爲List元素
if (isListElement) {
for (int i = 0; i < level; i++) {
str.append(" ");
}
str.append("└—— " + clazz.getSimpleName() + "\n");
level++;
isListElement = false;
}
// 獲得當前輸入對象聲明的所有屬性
Field[] fieldArray = clazz.getDeclaredFields();
for (Field field : fieldArray) {
for (int i = 0; i < level; i++) {
str.append(" ");
}
field.setAccessible(true);
// 當前屬性未賦值
if (field.get(obj) == null) {
str.append("└—— " + field.getName() + " = " + field.get(obj)
+ "\n");
} else if (field.getType() == Teacher.class
|| field.getType() == Clazz.class) {
str.append("└—— " + field.getName() + "\n");
getStudentFields(field.get(obj), str, level + 1, false);
} else if (field.getType() == List.class) {
str.append("└—— " + field.getName() + "\n");
List list = (List) field.get(obj);
for (Object object : list) {
getStudentFields(object, str, level + 1, true);
}
} else if (field.getType() == Map.class) {
str.append("└—— " + field.getName() + "\n");
level++;
Map map = (Map) field.get(obj);
Set keySet = map.keySet();
for (Object key : keySet) {
for (int i = 0; i < level; i++) {
str.append(" ");
}
str.append("└—— " + key + " = " + map.get(key) + "\n");
}
} else if (field.getType() == Date.class) {
str.append("└—— "
+ field.getName()
+ " = "
+ new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format((Date) field.get(obj)) + "\n");
} else {
str.append("└—— " + field.getName() + " = " + field.get(obj)
+ "\n");
}
}
}

輸出:
Student
└—— name = tianChuanMM
└—— gender = MADAM
└—— birthday = 1990-08-08 08:08:08
└—— clazz
└—— name = alipayUniversity301
└—— number = 20
└—— master
└—— name = alipayTeacher
└—— gender = MADAM
└—— birthday = 1981-01-01 11:11:11
└—— infoMap
└—— nativePlace = hangzhou
└—— mobile = 13800138000
└—— email = [email protected]
└—— gradeList
└—— Grade
└—— subject = math
└—— score = 88.0
└—— readerList
└—— Teacher
└—— name = mathReader2
└—— gender = null
└—— birthday = 1983-03-03 13:13:13
└—— infoMap = null
└—— Grade
└—— subject = computer
└—— score = 99.0
└—— readerList
└—— Teacher
└—— name = computerReader1
└—— gender = MALE
└—— birthday = 1984-04-04 14:14:14
└—— infoMap = null
└—— Teacher
└—— name = computerReader2
└—— gender = MALE
└—— birthday = 1985-05-05 15:15:15
└—— infoMap = null
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章