`
javaboy2006
  • 浏览: 183361 次
  • 性别: 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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics