我前几天在Java中为一个类编写了toString()方法,通过手动将类的每个元素写成字符串。然后我意识到,使用反射可能可以创建一个通用的toString()方法,可以适用于所有类。也就是说,它将找出字段名称和值,并将它们发送到一个字符串中。
获取字段名称相当简单,以下是我的同事想出来的方法:
获取字段名称相当简单,以下是我的同事想出来的方法:
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()时存储字段来减少性能开销。但是查找这些值可能会更加昂贵。
由于反射的性能原因,这可能更多是理论上的想法而不是实际应用。但我对反射的概念很感兴趣,以及如何使用它来改进日常编程。