我已经实现了一个模拟java中商店的应用程序,所有信息都放在用SQL构建的数据库中。我的问题是使用反射技术,我必须实现它才能显示表中的元素列表。 我试过这个方法(第一个答案,一个是metaData) Most simple code to populate JTable from ResultSet 但是我被告知这不是一种反思方法。 我是在老师的指导下完成的。但是,我不知道如何在我的函数中实际调用它以及“对象”应该来自何处。 第一个函数返回标题,第二个函数提取信息并创建表格。
public class ReflectionExample {
protected static final Logger LOGGER = Logger.getLogger(ClientDao.class.getName());
public static ArrayList retrieveProperties(Object object) {
ArrayList<String> ob = new ArrayList<String>();
Class obiect = object.getClass();
int i = 0;
for (Field field : object.getClass().getDeclaredFields()) {
field.setAccessible(true); // set modifier to public
ob.add(field.getName());
i++;
}
return ob;
}
public static JTable retrievePropertiesM(List<?> object, Object[]lit) {
Class obiect = object.getClass();
Object [][] matrice = new Object[object.size()][20];
//Object[] lit=null;
int row = 0;
for (Object o : object) {
int col = 0;
for (Field field : o.getClass().getDeclaredFields()) {
field.setAccessible(true); // set modifier to public
Object value;
try {
value = field.get(object);
matrice[row][col]=value;
//lit[col]=field.getName();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
col++;
}
row++;
}
// Object[] lit=retrieveProperties(object);
JTable t = new JTable(matrice,lit);
return t;
}
}
但是,我怀疑为什么我做的第一种方式不是反思? 总而言之,我不明白反射意味着什么,反射的方法可以被数据库中的任何类型的对象调用。 一些解释或者某些地方我可以理解更好的反思?