java反射覆盖toString()方法
来源:互联网 发布:电脑逆战刷箱子软件 编辑:程序博客网 时间:2024/05/16 11:32
/**
*如何用反射来覆盖数据对象的toString()方法
*对于用来存储数据的对象,往往需要遍历它们所有属性及其值,这些变量可能会发生些变
*化,例如改变名称,新增属性等,如果在toString()方法中,使用反射可以便于后期维护
*/
import java.lang.reflect.Field;
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()方法
public String toString(){
StringBuffer sb=new StringBuffer();//定义一个StringBuffer
//得到所有的成员变量Fields
Field[] fields=this.getClass().getDeclaredFields();
//遍历一下
for(Field f:fields){
sb.append(f.getName());//得到变量名字
sb.append("=");//添加“=”号
try{
sb.append(f.get(this));
}catch(IllegalArgumentException e){
e.printStackTrace();
}catch(IllegalAccessException e){
e.printStackTrace();
}
sb.append("\n");
}
return sb.toString();
}
}
public class DataObjectTest
{
public static void main(String[] args){
//创建一个DataObject对象
Object obj=new DataObject("zhangsan","desc test",10,"other test");
//打印它的toString()方法的返回值
System.out.print(obj);
}
*如何用反射来覆盖数据对象的toString()方法
*对于用来存储数据的对象,往往需要遍历它们所有属性及其值,这些变量可能会发生些变
*化,例如改变名称,新增属性等,如果在toString()方法中,使用反射可以便于后期维护
*/
import java.lang.reflect.Field;
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()方法
public String toString(){
StringBuffer sb=new StringBuffer();//定义一个StringBuffer
//得到所有的成员变量Fields
Field[] fields=this.getClass().getDeclaredFields();
//遍历一下
for(Field f:fields){
sb.append(f.getName());//得到变量名字
sb.append("=");//添加“=”号
try{
sb.append(f.get(this));
}catch(IllegalArgumentException e){
e.printStackTrace();
}catch(IllegalAccessException e){
e.printStackTrace();
}
sb.append("\n");
}
return sb.toString();
}
}
public class DataObjectTest
{
public static void main(String[] args){
//创建一个DataObject对象
Object obj=new DataObject("zhangsan","desc test",10,"other test");
//打印它的toString()方法的返回值
System.out.print(obj);
}
}
name=zhangsan
desc=desc test
age=10
other=other test
以上代码,访问Field的时候,并没有使用setAccessible(true)方法,因为toString()方法在类中。
0 0
- java反射覆盖toString()方法
- 使用Java反射机制覆盖toString()方法
- Effective Java Item10-总是覆盖toString方法
- Java中覆盖toString()
- Effective Java(覆盖equals时总要覆盖hashcode方法、始终要覆盖toString)
- 覆盖toString()方法的坑
- 利用java反射机制编写通用的toString 方法
- 使用java反射编写通用的toString()方法
- 《问题总结》JAVA什么时候要覆盖toString()、equals()、hashCode()方法??为什么要覆盖呢? 《通俗回答》
- 利用反射重写toString()方法
- 利用反射重写tostring方法
- Effective Java 对于所用对象都通用的方法 10.始终要覆盖toString,玩转toString
- java对象通用方法之覆盖equals时请遵守通用约定、覆盖equals时总要覆盖hashCode、始终要覆盖toString、考虑实现Comparable接口
- Effective Java (10) 始终要覆盖toString
- Effective Java读书笔记-始终要覆盖toString
- Effectice Java之始终覆盖toString(十)
- Java tostring()方法
- java toString方法作用
- Java TreeMap
- 历史的回顾,今日的惊喜
- 6-oracle中where 子句和having子句中的区别
- CenterOS下的mysql安装及初始化:
- Bitmap六种压缩模式
- java反射覆盖toString()方法
- Android Studio中模拟器中关于VT-x is disabled in BIOS错误的解决方案
- JAVA回调机制
- 洛谷 p1004 方格取数 双线dp
- 程序员面试金典: 9.9 递归和动态规划 9.10求堆出箱子的最大高度
- 【Jmeter】accessToken
- C++中的线程函数如何访问类中的成员变量
- ios UITableview 刷新某一个cell 或 section
- linux内核中Makefile的使用