概述
package com.ch09_reflection;
import java.lang.reflect.Field;
/**
* <p>用于保存数据的类,往往会具有很多属性(或称为成员变量),而且这些变量可能会发生一些变化,
* 例如改变名称、新增属性、去掉属性等。</p>如果在toString()方法中,把这些属性用硬代码(将一些可变的数据直接写在代码中,就叫硬代码)
* 的方式进行字符串相加,则非常不便于以后维护。其实,反射机制完全可以适用于所有的这类数据对象的数据遍历的。它的基本思想就是使用
* Field类所提供的相关API进行字符串的拼接。
* 思路:
* getDeclaredFields()方法得到所有Field对象
* 遍历Field数组
* 每次循环假身份字段名和字段值
* 返回循环叠加以后的字符串结果
* @author js
*
*/
class DataObject{
private String name;
private String desc;
private int age;
private String other;
//构造器
public DataObject(String name, String desc, int age, String other) {
super();
this.name = name;
this.desc = desc;
this.age = age;
this.other = other;
}
//覆盖toString()方法
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
Field[] fields = this.getClass().getDeclaredFields();
for(Field iField : fields) {
sb.append(iField.getName());
sb.append("=");
try {
sb.append(iField.get(this));
}catch(IllegalArgumentException e) {
e.printStackTrace();
}catch(IllegalAccessException e) {
e.printStackTrace();
}
sb.append("n");
}
return sb.toString();
}
}
public class CoverToString {
public static void main(String[] args) {
Object object = new DataObject("zhangsan", "desc test", 10, "other test");
System.out.println(object);
}
}
最后
以上就是无心星月为你收集整理的使用Java反射机制覆盖toString()方法的全部内容,希望文章能够帮你解决使用Java反射机制覆盖toString()方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复