我询问您对此事的看法,因为我不确定在这种情况下是否应该使用反射。
场景是我有一个表,我需要确定它是否处于脏状态。如果用户对表进行更改,然后导航到另一个页面而不保存更改...应该弹出一条警告消息,指出“未保存的更改将丢失”。
我使用的方法是创建一个标志,如果表脏则设置为 true,否则设置为 false。当用户在不保存表格的情况下导航离开时,通过单击链接(将他带到另一个站点的链接)会弹出警告消息。另一方面,如果用户在离开之前保存表格,则不会出现警告消息。
如果我将脏标志设置为静态,可能会出现的问题是其他用户可能会遇到处于不应该状态的标志。由于静态变量绑定(bind)到类,每次我检查该变量时,该字段的值都会在应用程序中的每个用户之间共享,不是吗?
但是,另一方面,如果我不将其设为静态并将其用作成员变量,那么当我通过反射实例化该对象时,它将返回默认值。如果是 boolean 值则为 False,如果为字符串则为 null,或者将任何值初始化为。
这让我得出这样的结论:反射不是本示例中使用的最佳选择?
我期待收到您的来信,非常感谢您的意见/观点。
非常感谢。
最佳答案
您的表将由 TableModel 支持。向用户显示数据页面并允许用户编辑该模型内的数据的 TableModel 实例应该“知道”它是否处于保存状态。
这可以简单地通过创建自定义表模型并添加脏标志来完成 - 每次调用 setValueAt
时都会触发该标志:
public class DirtyTableModel extends DefaultTableModel {
protected boolean dirty;
public boolean isDirty() {
return dirty;
}
/**
* Called with setDirty(false) after save
*/
public void setDirty(boolean on) {
dirty = on;
}
@Override
public void setValueAt(Object aValue, int row, int column) {
setDirty(true);
super.setValueAt(aValue, row, column);
}
}
不需要任何形式的反射(reflection)。
关于java - 在此示例中使用反射是否合适,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36937017/