利用Java反射机制实现toString方法
【目的】 项目中往往会采用toString()方法查看某个对象是否与预期内容一致,而默认的toString方法,只能输出对象的签名而非其真实内容。利用JAVA的反射机制,在基类中实现一个toString()方法,从而如果有其他的类定义继承这个基类的时候,可以自动继承toString()方法并输出内容。
【逻辑实现】
@SuppressWarnings("unchecked")
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append(this.getClass().getName() + ": ");
Field[] fields = this.getClass().getDeclaredFields();
Class thisClass = this.getClass();
for (int i = 0; i < fields.length; ++i) {
Field field = fields[i];
String fieldName = field.getName();
String getMethod = "get" + fieldName.substring(0,1).toUpperCase()
+ fieldName.substring(1);
try {
Method thisMethod = thisClass.getMethod(getMethod, new Class[] {});
sb.append(fieldName + "=" + thisMethod.invoke(this, new Object[] {}) + ", ");
} catch (Exception e) {
sb.append(getMethod + " is not exist, ");
}
}
return sb.toString();
}
【简单说明】
1. 利用Java的反射机制,我们可以取到Java类的名称、Java类中所拥有的成员变量和成员函数等,并可以在外部调用这些函数。
2. Java Bean中都会对成员变量增加set/get方法,而这些方法的命名方式遵循一定的规律,借助这些规律,可以完成以上方法调用。

浙公网安备 33010602011771号