Я использовал его в режиме реального времени. Обычно мы не хотим выполнять любое динамическое распределение (или освобождение) после запуска системы, потому что нет никакой гарантии, сколько времени это займет.
То, что я могу сделать, это предустановить большой кусок памяти (достаточно большой, чтобы удержать любое количество того, что может потребоваться классу). Затем, когда я выясню во время выполнения, как построить вещи, размещение new можно использовать для построения объектов прямо там, где я их хочу. Одна из ситуаций, которые я знаю, я использовал, чтобы помочь создать гетерогенный круговой буфер .
Это, конечно, не для слабонервных, но именно поэтому они делают для него синтаксис угловатый.
Один из самых простых способов - сделать мэйнфрейм доступным из MakeABooking.
Когда вы создаете экземпляр MakeABooking, пусть он инкапсулирует mainFrame, просто добавляя надлежащий конструктор, например
public MakeABooking(MainFrame mainFrame){
this.mainFrame = mainFrame;
}
и вызывая его
new MakeABooking(mainFrame); // or new MakeABooking(this) from the mainFrame
затем из MakeABooking, когда вам нужно, что вы можете:
ArrayList<String> names = mainFrame.getNames();
где getNames()
- это метод, который вы написали на mainFrame для инкапсуляции поля имен. например,
public ArrayList<String> getNames(){
return names;
}