java中的所有对象都是Object的继承人。这意味着您可以返回所需的一切,而不是Object。
public class MyTableModel extends DefaultTableModel implements TableModel {
@Override
public Class> getColumnClass(int column) {
switch (column) {
case 0: return Integer.class;
case 1: return Double.class;
case 2: return Boolean.class;
case 3: return Date.class;
case 4: return String.class;
}
return Object.class;
}
@Override
public Object getValueAt(int row, int column) {
switch (column) {
case 0: return 1;
case 1: return 1.2;
case 2: return true;
case 3: return new Date();
case 4: return "My Text Value";
}
return new Object();
}
}
如果您使用的是对象虚拟方法(如equals),则可以直接定位对象:
textfield.getText().equals(model.getValueAt(1, 4));
对于更具体的事情,您需要对适当的类型(返回TableMOdel#getColumnClass(int))进行显式转换。
更新:
在模型中,您可以添加模板方法,以便在值检索中保存显式转换。
public T getValue(int row, int column) {
return (T) getValueAt(row, column);
}
然后您可以按如下方式使用单元格值:
Integer var0 = model.getValue(1, 0);
Double var1 = model.getValue(1, 1);
Boolean var2 = model.getValue(1, 2);
Date var3 = model.getValue(1, 3);
String var4 = model.getValue(1, 4);