Проблема заключалась в том, что я объявил «OrderOrderItem» как внутренний класс контроллера. Перемещение OrderOrderItem в новый файл заставляет вещи работать правильно.
Статические методы были бы очень немного лучшей производительностью и мудрой памятью:
Но честно я, вероятно, все еще сделал бы это a singleton
так или иначе. Усиления Вы продвинулись бы, не делая его, вероятны столь маленькие, что они имели бы нулевое значение, даже в мобильной среде.
Можно ли избежать любой ситуации и сделать ли их регулярными классами?
Игнорируя вопрос о производительности, я рекомендовал бы избежать одиночных элементов и статических методов улучшить Вашу тестируемость.
Одиночные элементы и статические методы может быть очень трудно протестировать; в этом отношении одиночные элементы являются чрезвычайно статическими методами, но с другим именем. У Misko Hevery, который работает над командой Google Test, есть несколько хороших статей об этом предмете:
Не волнуйтесь об абсурдной микрооптимизации как этот. Беспокойство о пригодности для обслуживания.
Это кажется, что приложение записано в полностью стиль неOO и могло извлечь выгоду много из устранения большинства тех "вспомогательных методов" и помещения их, где они принадлежат, с данными они воздействуют на.
При ответе на вопрос по номиналу, статические вызовы, вероятно, потребуют наименьшего количества суммы мощности ЦП. Причина состоит в том, что нормальные методы динамичные связанный и требуют некоторого поиска во времени выполнения, в то время как статические методы связываются время компиляции.
Однако это, вероятно, не будет иметь значения в Вашем приложении. Разница является действительно небольшой. Если Ваше приложение сделает какую-либо вещь с gui, xml рендеринг, то интернет-соединения или другое внешнее управление Ваш найдут, что эти операции затмевают простые поиски метода огромным фактором.
Даже если Вы не сделаете, то во время профилирования Вас, более вероятно, встретятся с единственным узким местом, держащим Ваше приложение, и обнаружат, что это не поиск метода, но некоторая логика, Вы сделали Ваш сам. Например, Вы использовали arraylist вместо hashset, и содержит метод, оказываются дорогими.
Таким образом, поскольку производительность в этих случаях действительно не имеет значения, я рекомендовал бы использовать одноэлементные реализации выше статических методов, поскольку дизайн немного более гибок. Хотя вне выбора, который Вы предложили, я отброшу классы помощника полностью и встрою методы в Вашем pojo's.