Генерация Java Externalizable блоков readExternal () / writeExternal () автоматически - PullRequest
8 голосов
/ 17 августа 2011

Я работаю над проектом, в котором собственная сериализация Java медленная, поэтому мы хотим перейти к реализации интерфейса Externalize в классах для повышения производительности.

Однако в этих классах много членов-данных, и мы поняли, что легко делать ошибки при написании этих двух методов. Мы просто читаем / пишем всем членам класса в этих функциях, ничего особенного. Есть ли какой-нибудь способ генерирования блоков readExternal() writeExternal() для автоматического извлечения в автономном процессе или во время компиляции?

Я посмотрел на http://projectlombok.org/, и что-то подобное было бы идеально.

Точно так же мы хотели бы сохранить эти классы неизменяемыми, но неизменяемые классы не могут реализовать интерфейс с поддержкой внешнего интерфейса - мы хотим использовать шаблон прокси-классов из эффективной Java - наличие этого сгенерированного было бы также полезным.

1 Ответ

1 голос
/ 17 августа 2011

Я работаю над проектом, в котором собственная сериализация Java медленная

Как медленно? Зачем? Делать это быстрее с большим количеством ручного кодирования вряд ли будет экономически целесообразным или обслуживаемым в долгосрочной перспективе. Затраты на сериализацию должны сводиться к временным и пространственным ограничениям при передаче. Нет особой причины, по которой сериализация по умолчанию в Java должна быть поразительно медленнее, чем результат всего ручного кодирования, которое вы планируете. Вам было бы лучше расследовать причины. Например, вы можете обнаружить, что удачный BufferedOutputStream решит все ваши проблемы.

...