前几天,我通过手动将类的每个元素写成String来为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 commons-lang ReflectionToStringBuilder为您完成此任务。
import org.apache.commons.lang3.builder.ReflectionToStringBuilder
// your code goes here
public String toString() {
return ReflectionToStringBuilder.toString(this);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句