Создание и преобразование встроенного объекта в Java - программирование
Подтвердить что ты не робот

Создание и преобразование встроенного объекта в Java

Я пришел на Java из Visual Basic и, кажется, считаю, что я по-прежнему испорчен: p

Есть ли способ создать экземпляр объекта и изменить его в строке? Что-то вроде:

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

Мне удалось использовать методы @Override, но я ищу что-то более простое. У меня есть поиск много, но если есть определенный термин для такого встроенного экземпляра, он ускользает от меня.

Спасибо за ваше время!

4b9b3361

Ответ 1

Да, но некоторые считают это взломанным.

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

В основном вы добавляете еще один слой {} (блок инициализации экземпляра), который выполняется при создании экземпляра панели. поэтому вы можете вставить в него любой код. (например, вызывающие сеттеры).

Ответ 2

Хороший трюк представлен в ответе @ClickerMonkey. Однако, если класс поддерживает цепочку методов, вы можете использовать аналогичный синтаксис без инициализатора "взломать":

new ChainClass().setSize(100,100) .setLocation(50,50) .setBackground(Color.red)

Недостатком является то, что ChainClass должен выглядеть примерно так:

public class ChainClass  {
  public ChainClass setSize(int w, int h)  {
     // ...
     return this;
  }

  public ChainClass setLocation(int x, int y)  {
    // ...
    return this;
  }

  // etc.
}

Это, к сожалению, не относится к большинству стандартных классов Java. Однако вы можете реализовать его для своих классов.