#java #json #gson #hashcode
#java #json #gson #хэш-код
Вопрос:
У меня есть POJO, который я хотел бы сериализовать в JSON с помощью Gson. По какой-то причине я не могу изменить POJO, но я хотел бы включить вычисленную обычную Java hashCode
в выходные данные в качестве дополнительного ключа. Есть ли какой-нибудь элегантный способ сделать это?
Комментарии:
1. Почему бы просто не сохранить его как поле? Если ваш POJO неизменяем, вы можете просто вычислить его и назначить в конструкторе. Поле и фактический результат hashCode () даже не будут противоречить друг другу.
2. Я не могу изменить POJO .. И я думаю, мне нужно будет переназначать это значение каждый раз, когда я вызываю какой-либо установщик
3. Нет, если ваш POJO был неизменяемым (т. Е. Без установщиков). Но да, вы правы, предложение на самом деле не имеет смысла, когда вы не можете изменить POJO.
4. Вы могли бы предоставить фасад для вашего POJO, проксирующего фактический экземпляр, переданный в конструкторе. Предоставляя тот же API, что и POJO, вы можете добавлять произвольные дополнительные элементы, такие как хэш-код, через общедоступное конечное поле или средство получения.
5. Вам нужен хэш-код только для одного класса, или, если в POJO есть значения, отличные от json-primitive, должны ли они также содержать хэш-коды?