我正在编写自己的TableModel实现.由于我需要一些共享某些功能的各种实现,我决定首先准备一个抽象类.表的字段表示为:
protected Object[][] lines;
Run Code Online (Sandbox Code Playgroud)
基本上,同一列中的所有元素应该是相同的类型,但是列类可能因不同的实现而异.我想setValueAt在抽象类中编写一个通用函数,检查是否val属于正确类型.
@Override
public void setValueAt(Object val, int row, int col) {
if (val instanceof this.getColumnClass(col))
lines[col][row] = val;
}
Run Code Online (Sandbox Code Playgroud)
编译器在此发出错误信号:
Syntax error on token "instanceof", == expected
Run Code Online (Sandbox Code Playgroud)
为什么?
正确的操作数instanceof必须是ReferenceType(JLS 15.20).使用
if (this.getColumnClass(col).isInstance(val))
Run Code Online (Sandbox Code Playgroud)