2015-09-20 8 views
0

Я пытаюсь использовать библиотеку Kryo для глубокого копирования объектов, но у меня небольшая проблема. Я хотел бы глубоко скопировать объект без переходных переменных. Я знаю, что я могу использовать для setCopyTransient(false)FieldSerializer так:Kryo setCopyTransient

FieldSerializer<?> playerSerializer = new FieldSerializer<Player>(kryo, Player.class); 
playerSerializer.setCopyTransient(false); 
kryo.register(Player.class, playerSerializer); 

, но я должен был бы установить новый FieldSerializer для каждого класса. Могу ли я получить как-то по умолчанию FieldSerilizer от Kryo и установить там setCopyTransient(false)? Я пробовал что-то подобное и подобные решения, но ничего не делает:

FieldSerializer<?> serilizer = (FieldSerializer<?>) kryo.getDefaultSerializer(FieldSerializer.class); 
serilizer.setCopyTransient(false); 

ответ

0

Какую версию крио вы используете. Я использую 3.0.0, и мои временные поля не сериализованы.

+0

Я использую kryo версии 3.0.3. Используете ли вы kryo для глубокого копирования (метод 'kryo.copy()')? Копирование не сериализуется в байты и обратно. В нормальных сериализации переходные поля опускаются, но в кооперации нет. – Sabriael

+0

@Sabriael No. Я использую его для передачи данных по сети. Я думаю, что копия может делать это намеренно. – Jags