当前位置: 技术问答>java相关
谁给解释一下这段代码?
来源: 互联网 发布时间:2015-10-29
本文导语: DefaultTableModel myTableModel = new DefaultTableModel(){ public void addRow(Vector rowData) { if (rowData == null) { rowData = new Vector(super.getColumnCount()); } ...
DefaultTableModel myTableModel = new DefaultTableModel(){
public void addRow(Vector rowData) {
if (rowData == null) {
rowData = new Vector(super.getColumnCount());
}
super.dataVector.addElement(rowData);
super.fireTableDataChanged();
}
public Object getValueAt(int row, int column) {
}
public void setValueAt(Object value, int row, int column) {
}
public boolean isCellEditable(int row, int column) {
return false;
}
};
问题: 1.new 一个DefaultTableModel对象后,后面的花括号如何解释?
2.方法里面的super指谁?
3.最后为何要一个分号?
public void addRow(Vector rowData) {
if (rowData == null) {
rowData = new Vector(super.getColumnCount());
}
super.dataVector.addElement(rowData);
super.fireTableDataChanged();
}
public Object getValueAt(int row, int column) {
}
public void setValueAt(Object value, int row, int column) {
}
public boolean isCellEditable(int row, int column) {
return false;
}
};
问题: 1.new 一个DefaultTableModel对象后,后面的花括号如何解释?
2.方法里面的super指谁?
3.最后为何要一个分号?
|
这可能是个内部类吧,花括号是类DefaultTableModel 的内容。没看到最后边还要个 “;” 吗? 这只是一个创建实例的语句。
|
匿名内部类的定义方法
这个内部类从DefaultTableModel继承,或者是实现了接口DefaultTableModel.
赋值表明用父类的引用指向子类的引用.或者是接口的指针指向实现类的指针
这个内部类从DefaultTableModel继承,或者是实现了接口DefaultTableModel.
赋值表明用父类的引用指向子类的引用.或者是接口的指针指向实现类的指针
|
应该是等效于这样:
DefaultTableModel myTableModel = new NewTableModel();
....
....
private class NewTableModel extends DefaultTableModel{
public void addRow(Vector rowData) {
if (rowData == null) {
rowData = new Vector(super.getColumnCount());
}
super.dataVector.addElement(rowData);
super.fireTableDataChanged();
}
public Object getValueAt(int row, int column) {
}
public void setValueAt(Object value, int row, int column) {
}
public boolean isCellEditable(int row, int column) {
return false;
}
}
....
DefaultTableModel myTableModel = new NewTableModel();
....
....
private class NewTableModel extends DefaultTableModel{
public void addRow(Vector rowData) {
if (rowData == null) {
rowData = new Vector(super.getColumnCount());
}
super.dataVector.addElement(rowData);
super.fireTableDataChanged();
}
public Object getValueAt(int row, int column) {
}
public void setValueAt(Object value, int row, int column) {
}
public boolean isCellEditable(int row, int column) {
return false;
}
}
....
|
可以这样理解:
class TrueClass extends DefaultTableModel
{
.....
return new DefaultTableModel();
}
class TrueClass extends DefaultTableModel
{
.....
return new DefaultTableModel();
}
|
DefaultTableModel myTableModel = new DefaultTableModel(){
...
...
...
};
这样就看清楚了吧?
这里是一个语句呀,你用鼠标把一个打挎号选中啊,可以看到和它匹配的另一个也 选中了啊!
呵呵!
...
...
...
};
这样就看清楚了吧?
这里是一个语句呀,你用鼠标把一个打挎号选中啊,可以看到和它匹配的另一个也 选中了啊!
呵呵!