求一个能打印任何类成员变量的java程序
其实就是想知道怎样提取一个自定义类的信息。就是提供一个方法,传入值是Object,然后打印出他所有的成员变量。...
其实就是想知道怎样提取一个自定义类的信息。就是提供一个方法,传入值是Object,然后打印出他所有的成员变量。
展开
展开全部
public void printMethod(Object obj) throws Exception{
//获取这个对象的定义类
Class cz = obj.getClass();
//获取类的变量成员列表,注意,这个地方还有一个getDeclaredField方法,具体区别参见javadoc
for(java.lang.reflect.Field f : cz.getFields()){
//获取变量的值,当然你也可以获取变量的名字
Object value = f.get(obj);
System.out.println(value);
}
}
//获取这个对象的定义类
Class cz = obj.getClass();
//获取类的变量成员列表,注意,这个地方还有一个getDeclaredField方法,具体区别参见javadoc
for(java.lang.reflect.Field f : cz.getFields()){
//获取变量的值,当然你也可以获取变量的名字
Object value = f.get(obj);
System.out.println(value);
}
}
追问
getDeclaredFields在打印private变量时会抛异常,请问要怎么解决呢?
追答
f.setAccessible(true)
展开全部
1:用java的反射。api有那个文档。
2:用阿帕奇的那个beanuntil那个工具包(也是基于java反射做的,但是封装好了,比较方便)
2:用阿帕奇的那个beanuntil那个工具包(也是基于java反射做的,但是封装好了,比较方便)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以考虑用反射
Class类中有方法:
public Field[] getDeclaredFields() throws SecurityException
返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段。包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段。 返回数组中的元素没有排序,也没有任何特定的顺序。如果该类或接口不声明任何字段,或者此 Class 对象表示一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。
Class类中有方法:
public Field[] getDeclaredFields() throws SecurityException
返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段。包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段。 返回数组中的元素没有排序,也没有任何特定的顺序。如果该类或接口不声明任何字段,或者此 Class 对象表示一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。
参考资料: jdk
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
修改toString方法呗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用集合啊,再把它迭代出来啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询