这种嵌套方法是如何工作的?[TableRowRenderingTip.java]

这种嵌套方法是如何工作的?[TableRowRenderingTip.java],java,tablecellrenderer,Java,Tablecellrenderer,当我在java文档中查找一些东西时,我意识到有一种我以前从未见过的嵌套,因此如果您能解释一下它是什么或它是如何命名的,我将非常感激 这是我在StackOverflow的第一个问题,所以如果我违反了任何规则,我很抱歉 代码: 我真的不知道如何正确使用问题编辑器 提前谢谢 完整的源代码。您找到的称为匿名类。在本例中,它扩展了JTable类,但因为它不想多次使用它,所以它不会给新类命名(因此是匿名的),而是立即创建它的实例,并将其存储在表变量中。 在新类中,它覆盖原始JTable的prepareRen

当我在java文档中查找一些东西时,我意识到有一种我以前从未见过的嵌套,因此如果您能解释一下它是什么或它是如何命名的,我将非常感激

这是我在StackOverflow的第一个问题,所以如果我违反了任何规则,我很抱歉

代码:

我真的不知道如何正确使用问题编辑器

提前谢谢


完整的源代码。

您找到的称为匿名类。在本例中,它扩展了
JTable
类,但因为它不想多次使用它,所以它不会给新类命名(因此是匿名的),而是立即创建它的实例,并将其存储在
变量中。 在新类中,它覆盖原始
JTable
prepareRenderer
方法

在这里,您可以阅读有关匿名类的更多信息:

感谢您的快速响应!
private JComponent createData(DefaultTableModel model)
{
    JTable table = new JTable( model )
    {    //What are these brackets for? I know it contains a method but I've never seen a method "nested" with a variable initialization.
        public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
        {
            Component c = super.prepareRenderer(renderer, row, column);

            //  Color row based on a cell value

            if (!isRowSelected(row))
            {
                c.setBackground(getBackground());
                int modelRow = convertRowIndexToModel(row);
                String type = (String)getModel().getValueAt(modelRow, 0);
                if ("Buy".equals(type)) c.setBackground(Color.GREEN);
                if ("Sell".equals(type)) c.setBackground(Color.YELLOW);
            }

            return c;
        }
    };