`
javaboy2006
  • 浏览: 186297 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

树形结构输出对象声明的所有属性键值

    博客分类:
  • java
阅读更多
	/**
	 * 获得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
分享到:
评论

相关推荐

    javascript教程

    DOM则是一个由节点构成的树形结构,它描述了文档的结构,JavaScript可以通过DOM操作文档内容、结构和样式。BOM则关注浏览器窗口和框架,提供了与浏览器交互的方法和对象。 ECMAScript语法是JavaScript编程的基础,...

    JDOM_API_帮助文档

    DOM是一种标准,它定义了如何表示XML文档的树形结构,以及如何通过编程方式访问和操作这个结构。DOM允许开发者以对象的形式访问XML文档的每个部分,包括元素、属性、文本节点等。 **JDOM基本概念** 1. **Element...

    TinyXML解析xml文档

    DOM模型允许开发者以树形结构来表示XML文档,TinyXML提供了以下核心类来支持这一模型: 1. TiXmlBase:所有TinyXML类的基类,包含结点或属性在原始XML文档中的位置信息。 2. TiXmlAttribute:用于表示XML元素的属性...

    javascript一些问题解答

    - DOM(Document Object Model)是网页内容的树形结构表示。 - **选择元素**:通过`document.querySelector`、`document.querySelectorAll`等方法选择页面上的元素。 - **修改元素**:可以通过`.textContent`、`....

    2021-2022计算机二级等级考试试题及答案No.10725.docx

    题目中的描述“数据库系统中最早出现的数据模型、用树形结构表示各类实体以及实体之间的联系的模型是**”正确答案是 `A. 层次数据模型`。层次数据模型是早期数据库系统中使用的一种模型,它使用树形结构来表示实体...

    javaweb开发人员面试题及答案.pdf

    - DOM (Document Object Model):将XML文档加载到内存中并构建一个树形结构,允许对文档的任意部分进行访问和修改。 - SAX (Simple API for XML):基于事件驱动的模型,适用于大型文件的解析,因为它不会一次性...

    2021-2022计算机二级等级考试试题及答案No.15771.docx

    4. Windows操作系统采用的是树形目录结构,便于管理和组织文件和文件夹。 5. 在关系数据库中,表(Table)是用来表示实体关系的数据结构,字段(Field)代表表中的列,记录(Record)代表表中的行。 6. 关键字是...

    Python学习笔记md文件.rar

    堆是一种特殊的树形数据结构,常用于优先队列。集合则是一个无序且不重复元素的集合。这两部分将详细介绍它们的特点、用法及操作,如`heapq`模块的使用和集合操作(如并集、交集、差集等)。 7. **八皇后问题.md**...

    C++ 基础知识总结_终稿_124.pdf

    5. **二叉树**: 每个节点最多有两个子节点的树形结构。 6. **其他树及森林**: 如B树、红黑树等。 7. **排序**: 包括快速排序、归并排序等多种算法。 8. **查找**: 如二分查找等。 9. **图搜索算法**: 如广度优先搜索...

    FreeMarker Manual.pdf

    - **DOM 树:** 将 XML 文档解析成树形结构。 - **将 XML 加载到数据模型:** 学习如何将 XML 数据映射到 FreeMarker 的数据模型中。 ##### 3. 命令式 XML 处理 - **学习示例:** 通过具体例子理解命令式处理的...

    2021-2022计算机二级等级考试试题及答案No.1924.docx

    - **层次模型**(Hierarchical Model):在数据库设计中,这种模型以树形结构来组织数据,每个父节点可以有多个子节点,但每个子节点只能有一个父节点。 - **网状模型**(Network Model):这是另一种早期的数据库...

    java面试问题汇总(非常全面)

    - **DOM**:将XML文档转换成内存中的树形结构,适合小文档。 - **SAX**:基于事件驱动模型的解析器,适用于大文档。 - **StAX**:流式API,提供了一种更高效的解析XML文档的方法。 #### 21. Serializable是什么意思...

    ActionScript3.0开发人员指南

    - **关联数组**:探讨如何使用键值对形式的数据结构,类似于JavaScript中的对象或Python中的字典。 - **多维数组**:讲解如何创建和操作具有多个维度的数组,这对于处理复杂数据结构很有帮助。 - **克隆数组**:了解...

    面试题总结.docx

    而对象是由键值对组成的集合,可以包含属性和方法。构造函数定义了一组对象共有的属性和方法,而对象则表示具体的实例。 ### 四十六、项目中遇到的问题及解决方案 在项目开发过程中,常见的问题包括性能瓶颈、代码...

    易语言程序免安装版下载

    修改扩展界面支持库一,为“树形框”增加多态检查框功能,相应地添加了多个与检查框相关的属性、方法和事件。 17. 修改高级表格支持库,允许“复制选定文本()”“剪切选定文本()”在“允许选择块”属性为假时复制...

    C#编程经验技巧宝典

    24 &lt;br&gt;0050 using关键字的用法 24 &lt;br&gt;0051 变量的作用域 25 &lt;br&gt;2.5 其他 26 &lt;br&gt;0052 有效使用this对象 26 &lt;br&gt;0053 如何声明变量 26 &lt;br&gt;0054 如何声明相同类型的多个变量 26 ...

Global site tag (gtag.js) - Google Analytics