3
JPanel panel = new JPanel() {
        public void setBackground(Color c) {
           Logger.global.info("setBackground: c=" + c);
           super.setBackground(c);
        }
    };

I only know I can do JPanel panel = new JPanel();

Why can someone do the above? What's the name for it?

aioobe
  • 399,198
  • 105
  • 792
  • 807
user705414
  • 19,158
  • 37
  • 109
  • 154

2 Answers2

7

It is called an anonymous class.

That code basically creates a subclass of JPanel "on the fly" without giving it a name (thus the term anonymous class) and instantiates it.

Related questions and links:

Community
  • 1
  • 1
aioobe
  • 399,198
  • 105
  • 792
  • 807
0

It is an anonymous class that you extend and define additional methods or override existing ones.

Note that the same way you can extend interfaces or abstract classes.

mishadoff
  • 10,583
  • 2
  • 32
  • 54