关于java:声明一个新对象并在创建时调用它的一些方法

Declaring a new object and calling some of its methods on creation

本问题已经有最佳答案,请猛点这里访问。

我在网上看到了这个声明,觉得很有趣。然而,我不知道该搜索什么来获取更多关于它的信息。如果你能告诉我一些关于这个或什么搜索…

(方法对声明的调用)

1
2
3
4
5
 JPanel bluePanel = new JPanel(){{
        setBackground(Color.blue);
        setLocation(220, 10);
        setSize(50, 50);
 }};


您正在派生JPanel的匿名子类,然后为它声明一个初始化器块。

下面是子类:

1
new JPanel(){};

注意支架。其中声明了起始符:

1
2
3
4
5
new JPanel() {
 {
    // static initaliser
 }
};

子类的派生只是为了允许初始化器块。这被称为双括号初始化,有些人担心仅仅为了这个目的而创建匿名类会被滥用。

有关初始化器块的详细信息,请参阅此处。