我有一个要序列化的列表字段。 我也想序列化当类被序列化时到目前为止我看到的最大值。
class A {
private List<int> list;
private int max; //Math.Max(max, Collections.max(list));}
我认为我需要使用@JsonSerialize批注,但是我在此处指定的自定义序列化程序将采用列表或最大值,而不是全部采用。 可以为使用列表字段中数据的最大字段添加序列化程序吗?
答案 0 :(得分:0)
该列表在您的班级中是private
,因此您可以完全控制如何向其中添加元素。也就是说,如果您的类中没有执行该操作的代码,则什么也不会添加到列表中。
因此,无论代码添加(或删除,如果这样做)元素,都应仅更新max
值作为其操作的一部分。然后在进行序列化时,使用列表和max
上的标准序列化器。
如果出于某种原因(例如,由于使用某种方法返回列表的引用)而公开了列表,则应子类List<whatever>
并重写add()
方法以跟踪最大值