javaclassinlineinstantiation

Inline object instantiation and transformation in Java


I have come to Java from Visual Basic, and seem to think I have been, in many ways, spoiled :p

Is there a way to instantiate an object and modify it inline? Something like:

JFrame aFrame = new JFrame();   
aFrame.add(new JPanel() {.setSize(100,100) .setLocation(50,50) .setBackground(Color.red) });

I was able to @Override methods, but am looking for something simpler. I have search alot, but if there is a specific term for this kind of inline instantiation, it eludes me.

Thank you for your time!


Solution

  • Yes but some people consider it hacky:

    JFrame aFrame = new JFrame();
    aFrame.add(new JPanel() {{
     setSize(100,100);
     setLocation(50,50);
     setBackground(Color.red);
    }});
    

    Basically you add another layer of {} (instance initialization block), which is executed when the panel is instantiated. Therefore you can put any code in it. (like calling setters).