/**
* 获得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
分享到:
相关推荐
DOM则是一个由节点构成的树形结构,它描述了文档的结构,JavaScript可以通过DOM操作文档内容、结构和样式。BOM则关注浏览器窗口和框架,提供了与浏览器交互的方法和对象。 ECMAScript语法是JavaScript编程的基础,...
DOM是一种标准,它定义了如何表示XML文档的树形结构,以及如何通过编程方式访问和操作这个结构。DOM允许开发者以对象的形式访问XML文档的每个部分,包括元素、属性、文本节点等。 **JDOM基本概念** 1. **Element...
DOM模型允许开发者以树形结构来表示XML文档,TinyXML提供了以下核心类来支持这一模型: 1. TiXmlBase:所有TinyXML类的基类,包含结点或属性在原始XML文档中的位置信息。 2. TiXmlAttribute:用于表示XML元素的属性...
- DOM(Document Object Model)是网页内容的树形结构表示。 - **选择元素**:通过`document.querySelector`、`document.querySelectorAll`等方法选择页面上的元素。 - **修改元素**:可以通过`.textContent`、`....
题目中的描述“数据库系统中最早出现的数据模型、用树形结构表示各类实体以及实体之间的联系的模型是**”正确答案是 `A. 层次数据模型`。层次数据模型是早期数据库系统中使用的一种模型,它使用树形结构来表示实体...
- DOM (Document Object Model):将XML文档加载到内存中并构建一个树形结构,允许对文档的任意部分进行访问和修改。 - SAX (Simple API for XML):基于事件驱动的模型,适用于大型文件的解析,因为它不会一次性...
4. Windows操作系统采用的是树形目录结构,便于管理和组织文件和文件夹。 5. 在关系数据库中,表(Table)是用来表示实体关系的数据结构,字段(Field)代表表中的列,记录(Record)代表表中的行。 6. 关键字是...
堆是一种特殊的树形数据结构,常用于优先队列。集合则是一个无序且不重复元素的集合。这两部分将详细介绍它们的特点、用法及操作,如`heapq`模块的使用和集合操作(如并集、交集、差集等)。 7. **八皇后问题.md**...
5. **二叉树**: 每个节点最多有两个子节点的树形结构。 6. **其他树及森林**: 如B树、红黑树等。 7. **排序**: 包括快速排序、归并排序等多种算法。 8. **查找**: 如二分查找等。 9. **图搜索算法**: 如广度优先搜索...
- **DOM 树:** 将 XML 文档解析成树形结构。 - **将 XML 加载到数据模型:** 学习如何将 XML 数据映射到 FreeMarker 的数据模型中。 ##### 3. 命令式 XML 处理 - **学习示例:** 通过具体例子理解命令式处理的...
- **层次模型**(Hierarchical Model):在数据库设计中,这种模型以树形结构来组织数据,每个父节点可以有多个子节点,但每个子节点只能有一个父节点。 - **网状模型**(Network Model):这是另一种早期的数据库...
- **DOM**:将XML文档转换成内存中的树形结构,适合小文档。 - **SAX**:基于事件驱动模型的解析器,适用于大文档。 - **StAX**:流式API,提供了一种更高效的解析XML文档的方法。 #### 21. Serializable是什么意思...
- **关联数组**:探讨如何使用键值对形式的数据结构,类似于JavaScript中的对象或Python中的字典。 - **多维数组**:讲解如何创建和操作具有多个维度的数组,这对于处理复杂数据结构很有帮助。 - **克隆数组**:了解...
而对象是由键值对组成的集合,可以包含属性和方法。构造函数定义了一组对象共有的属性和方法,而对象则表示具体的实例。 ### 四十六、项目中遇到的问题及解决方案 在项目开发过程中,常见的问题包括性能瓶颈、代码...
修改扩展界面支持库一,为“树形框”增加多态检查框功能,相应地添加了多个与检查框相关的属性、方法和事件。 17. 修改高级表格支持库,允许“复制选定文本()”“剪切选定文本()”在“允许选择块”属性为假时复制...
24 <br>0050 using关键字的用法 24 <br>0051 变量的作用域 25 <br>2.5 其他 26 <br>0052 有效使用this对象 26 <br>0053 如何声明变量 26 <br>0054 如何声明相同类型的多个变量 26 ...