【发布时间】:2014-12-19 08:41:34
【问题描述】:
假设我有一个对象,我把它拿来字段:
Field[] fields = obj.getFields();
现在我正在遍历每一个,如果它是某种类,我想打印它们的成员,否则只需使用field.get(obj),以防它是一个字符串、int 或任何该命令将打印其值的东西,而不仅仅是引用指针。
如何检测它?
【问题讨论】:
-
每个
System.out.println(obj)调用都会隐式调用System.out.println(obj.toString())。所以 int、strings 和任何其他重写toString()方法的类都不会打印引用指针。 -
好的,但是有没有办法判断它是在项目中声明的类,而不是在内部声明的 java 类?
-
@e-r-a-n 可以查看包名。但这并不能解决知道
toString()是否被覆盖的问题。这是你的最终目标吗?如果是这样,请参阅Detect if object has overriden toString()。 -
@Duncan 没有,很遗憾没有。我想查看类字段并打印它们的值。但如果它是我创建的某种类,我也想在其上完成打印字段的整个过程
标签: java reflection