Java 初始化块

3

有人能帮我理解下面的结构吗?我不太明白这是初始化程序还是匿名类。我对这种语法不熟悉。

   JTable jt = new JTable(data, fields) **{
            public TableCellRenderer getCellRenderer(int row, int column) {
                // TODO Auto-generated method stub
                return renderer;
            }
        };**

可能是重复问题 - https://dev59.com/d1jUa4cB1Zd3GeqPR31t - mre
2个回答

6
它创建了一个匿名内部类来扩展 JTable 并重写 getCellRenderer 方法。
长说明:
您正在创建一个类,该类扩展 JTable 而不显式地为其分配名称,而是使用标准类声明:
public class ExtendedJTable extends JTable{}

这个类的可见性仅限于其定义和实例化的类内部。例如,当您需要覆盖特定类(JTable)的某个方法(getCellRenderer()),以限制当前类上下文中的某些目的时,就像您发布的代码一样,它非常有用。
这种方法有一些好处和限制。有关更深入的讨论,请参阅此article

2

你在这里做了两件事情:

  • 创建一个继承自JTable的类的对象。这是一个匿名类,因为它没有在其他地方声明。
  • 在这个类中,你覆盖了JTable的方法getCellRenderer(int row, int column)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接