2016-06-06 2 views
0

Я пытаюсь сериализовать мой простой объект POJO через диск и по сети. Но мне нужно контролировать атрибуты, которые могут быть сериализованы. Например:Java различает сериализацию на диске по сети

class POJO 
{ 
    String name; 
    int age; 
} 

Сейчас в этом примере выше я хочу имя и возраст, как для сериализации на диске. Но я хочу, чтобы возраст был сериализован по сети. После выполнения некоторого R & D я нашел два способа сделать это, но пока не смог разработать полноценное функциональное решение.

Решение 1: Используйте переходное ключевое слово.

Задача: Если я использую переходный режим, он прекращает сериализацию вообще.

Решение 2: Используйте внешний интерфейс.

Задача: Если я использую этот интерфейс, я должен реализовать два метода и управлять сериализацией самостоятельно. Как я узнаю, что на этот раз мой метод вызывается для сериализации на диске или через сеть. И если каким-то образом я это выясню с помощью некоторого флага, тогда код будет беспорядочным.

Моя идея - это форма решения на уровне конструкции. Например, для создания интерфейса, который предоставляет методы getters только для тех свойств, которые должны быть сериализованы. Затем, используя это, я могу читать и писать объект, а java при десерилизации автоматически обнаруживает через отражение или что-то, что мне нужно для сериализации/десериализации только тех атрибутов, для которых открыт метод getter. Есть ли у java что-то вроде этого?

Или Возможно, что-то более чистое, элегантное и аккуратное решение для этого.

Пожалуйста, помогите мне в этом.

Спасибо.

ответ

Смежные вопросы