/**
* 获得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 = ali88test@gmail.com
└—— 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
分享到:
相关推荐
本文实例讲述了js获取对象,数组所有属性键值(key)和对应值(value)的方法。分享给大家供大家参考,具体如下: [removed] var values=function(object) { var values = []; for (var property in object) values....
键值输出 键盘ascii码输出 ascii码
本文介绍了vue树形结构获取键值的方法示例,分享给大家,具体如下: 把键值文件放入 引入控件 import { getTypeValue } from '@/api/dict/dictValue/index'; 点击搜索,打开弹窗 机构名称 placeholder=请选择...
下面小编就为大家带来一篇java、js中实现无限层级的树形结构方法(类似递归)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
键值更换器键值更换器键值更换器键值更换器键值更换器键值更换器键值更换器键值更换器键值更换器
主要介绍了JS实现从对象获取对象中单个键值的方法,涉及javascript数组对象遍历、事件监听、处理等相关操作技巧,需要的朋友可以参考下
AboutProperty简单获取对象属性列表,键值对,superclass列表
嵌套的复杂数组对象,删除深层嵌套后返回新数组。 如:var data = [ { id: '1', name: 'www' }, { id: '2', name: 'qqq' }, { id: '3', name: 'eee', children: [ { id: '4', name: ...
测试按键键值 测试按键键值 测试按键键值 测试按键键值 测试按键键值 测试按键键值 测试按键键值 测试按键键值 测试按键键值 测试按键键值 测试按键键值
键值查询工具
本程序为手机键值测试JAVA程序,通过按下手机上的左右软键和0~9键及#跟*键了解您手机的键值。大家可以将该程序中测试出的手机键值,对比各大品牌机型键值示例图,找出最适合您的品牌机型手机游戏。附:诺基亚和索爱...
chw说明: 本程序将键盘发送到单片机的信息,以16进制方式送入电脑RS232口, 电脑串口接收软件为《串口调试助手V2.2》 串口发送波特率为...能帮你搞清楚键盘是如何工作的,按键盘相应的键值键盘输出什么数据。
演示如何获得注册表下某个键下的所有键值(2KB)
120项优化键值regedit120项优化键值
shell脚本写的删除redis中所有特殊键值的脚本。也可以修改一下自动操作redis
Aran - 基于Ranged LSM树的嵌入式键值存储
键值工具.rar