Создание и преобразование встроенного объекта в Java
Я пришел на Java из Visual Basic и, кажется, считаю, что я по-прежнему испорчен: p
Есть ли способ создать экземпляр объекта и изменить его в строке? Что-то вроде:
JFrame aFrame = new JFrame();
aFrame.add(new JPanel() {.setSize(100,100) .setLocation(50,50) .setBackground(Color.red) });
Мне удалось использовать методы @Override
, но я ищу что-то более простое. У меня есть поиск много, но если есть определенный термин для такого встроенного экземпляра, он ускользает от меня.
Спасибо за ваше время!
Ответы
Ответ 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. Однако вы можете реализовать его для своих классов.