利用Java Reflect机制编写万能toString()方法
来源:互联网 发布:ios 本地存储数组 编辑:程序博客网 时间:2024/06/07 02:37
package com.accp.test.filed;
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.List;
publicclass ObjectAnalyzer {
private List<Object> visited = new ArrayList<Object>();
public String toString(Object obj) {
if (obj == null)
returnnull;//如果obj为空..返回null
if (visited.contains(obj))
return"...";//如果visited中已经包含obj,返回...
visited.add(obj);
Class c1 = obj.getClass(); //得到运行时对象
if (c1 == String.class)
return (String) obj; //如果c1是String类型,直接转换
if (c1.isArray()) { //如果是数组类型
String r = c1.getComponentType() +"[]{";//得到该数组组件类型的Class
for (int i = 0; i < Array.getLength(obj); i++) {
if (i > 0)
r +=",";
Object var = Array.get(obj, i); //取得obj[i]元素的值
if (c1.getComponentType().isPrimitive()) //如果为基本类型
r += var;
else
r += toString(var);//递归调用
}
return r + "}";
}
String r = c1.getName();//得到obj名称
//检查本类域和所有超类域
do {
r +="[";
Field[] fields = c1.getDeclaredFields();//得到本类和超类所有域
AccessibleObject.setAccessible(fields,true);//将所有域设置为可访问的.
for (Field field : fields) {
if (!Modifier.isStatic(field.getModifiers())) {
if (!r.endsWith("["))
r +=",";
r += field.getName() +"=";
try {
Class type = field.getType(); //得到字段类型
Object var = field.get(obj);//设置值
if (type.isPrimitive()) //判断是否为基本类型
r += var;
else
r += toString(var);
}catch (Exception e) {
e.printStackTrace();
}
}
}
r+="]";
c1 = c1.getSuperclass();
}while (c1 != null);
return r;
}
}
- 利用Java Reflect机制编写万能toString()方法
- 利用java反射机制编写通用的toString 方法
- Android中利用java反射机制Reflect
- Android中利用java反射机制Reflect
- (JDBC)利用Java反射编写一个万能的数据库表查询方法
- 使用Java反射机制覆盖toString()方法
- java 反射机制 reflect
- java反射机制reflect
- java中的reflect机制
- java reflect机制
- Java Reflect 机制
- Java反射机制(reflect)
- Java reflect机制
- Reflect Java反射机制
- Java-反射机制reflect
- java reflect:反射机制
- Java 反射机制- reflect
- Java反射机制(reflect)
- java执行Linux命令 .
- iOS开发中@property的属性介绍
- jquerymobile-18 Dialog
- 堆排序练习:POJ 2388
- 2012年黑龙江省测绘地理信息质检人员暨国家2000大地坐标系培训合格人员名单
- 利用Java Reflect机制编写万能toString()方法
- URL去重
- 连接测试用例与待测系统
- 对malloc和free的理解1
- 各种数据结构的速度
- java网络编程--网络模型概述
- 第一周JAVA学习总结
- spring+struts2+dwr
- HDOJ 1097 A hard puzzle