前几天,我正在为 Java 中的一个类编写一个 toString() 方法,方法是将类的每个元素手动写入一个字符串,我突然想到,使用反射可能可以创建一个可以工作的通用 toString() 方法所有课程。 IE。它会计算出字段名称和值并将它们发送到字符串。
获取字段名称非常简单,这是同事的想法:
public static List initFieldArray(String className) throws ClassNotFoundException {
Class c = Class.forName(className);
Field field[] = c.getFields();
List<String> classFields = new ArrayList(field.length);
for (int i = 0; i < field.length; i++) {
String cf = field[i].toString();
classFields.add(cf.substring(cf.lastIndexOf(".") + 1));
}
return classFields;
}
使用工厂,我可以通过在第一次调用 toString() 时存储一次字段来降低性能开销。然而,找到这些值的成本可能要高得多。
由于反射的性能,这可能更假设,而不是实际。但我对反射的想法以及如何使用它来改进我的日常编程感兴趣。
Apache 公共语言反射到字符串生成器 http://commons.apache.org/proper/commons-lang//apidocs/org/apache/commons/lang3/builder/ReflectionToStringBuilder.html为你做这个。
import org.apache.commons.lang3.builder.ReflectionToStringBuilder
// your code goes here
public String toString() {
return ReflectionToStringBuilder.toString(this);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)