Убедительная просьба — не обвинять меня в незнании основных принципов Явы. Я в Яве новичок, но настолько я ее принципы понимаю.
Есть класс (public и прочее опустил)
class A {
A1 a1;
A2 a2;
// ...
}
В свою очередь
class A1 {
A11 a11;
A12 a12;
// ...
}
и т.д.. В общем, нормальная иерархия.
Проблема в том, что мне надо обеспечить максимальное быстродействие. Сейчас, когда надо, создаются экземпляры
A a = new A();
потом где-то (м.б., в конструкторе, м.б. нет)
a.a1 = new A1(); // или this.a1 = new A1();
a.a1.a11 = new A11();
и т.д. В общем, дергаем менеджер кучи для всех подобъектов, как и положено.
Между тем во всех этих классах в конечном счете есть только числа и текстовые строки. Массивов (не текстовых) нет, классов Явы тоже нет. Для текстовых строк я могу задать максимальный размер, ответственность за переполнение его беру на себя.
В С++ я бы описал все это одним пакетом
// описания A11,A12
class A1 {
A11 a11;
A12 a12;
// ...
};
class A {
A1 a1;
A2 a2;
// ...
};
и вызовом
A a = new A();
создал бы и сам A, и A1 и A11 и т.д. Там в экземпляре сидят экземпляры, а не ссылки.
Мне надо обеспечить максимальное быстродействие. И я хотел бы от этих вложенных new (и последующего освобождения этих блоков GC) избавиться
Понимаю, что такое вряд ли возможно, и все же — может, есть какие-то идеи ?
P.S. Уничтожить всю иерархию и запихать все на свете в один класс — не предлагать