Java初始化块
问题描述:
有人可以帮我理解下面的构造吗?我无法理解这是初始化程序还是匿名类。我不熟悉这个语法。Java初始化块
JTable jt = new JTable(data, fields) **{
public TableCellRenderer getCellRenderer(int row, int column) {
// TODO Auto-generated method stub
return renderer;
}
};**
答
它创建了一个匿名的内部类,它扩展了JTable,并重写了getCellRenderer方法。
朗解释:
你正在创建一个扩展JTable中没有一类明确分配给它一个名称,而不是使用标准的类声明:
public class ExtendedJTable extends JTable{}
这个类的知名度仅限于内部类它被定义和实例化。 例如,当您需要(如在发布的代码中)需要重写某个特定类(JTable)的方法(getCellRenderer())时,这对于限制于当前类上下文的某些目的非常有用。
这种方法有一些好处,也有一些限制。有关更深的讨论,请看这article。
答
你在这里做两件事情:
- 创建扩展JTable中的类的对象。这是一个匿名类,因为它没有在其他地方单独声明。
- 在这个类中,覆盖了JTable的方法getCellRenderer(int row,int column);
可能的重复 - http://stackoverflow.com/questions/6432545/is-this-a-variation-of-an-anonymous-inner-class – mre