次のフィールドを持つオブジェクトをシリアル化しようとしています。
private TreeSet<TimeSlot<T>> counterTimeSlotSet =
new TreeSet<TimeSlot<T>>(
new Comparator<TimeSlot<T>>(){
@Override
public int compare(TimeSlot<T> cb1, TimeSlot<T> cb2) {
return cb1.getPeriod().compareTo(cb2.getPeriod());
}
});
シリアル化コードは次のとおりです。
BaseSlidingWindow<BasicVelocityCounter> window1 =
new BaseSlidingWindow<BasicVelocityCounter>(
BasicVelocityCounter.class, slidingWindowConfig);
...
// jackson serializer test
Version version = new Version(1, 0, 0, "SNAPSHOT");
SimpleModule module = new SimpleModule("ZORRO", version);
module = module.addSerializer(new DateTimeSerializer());
// and so on...
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(module);
mapper.writeValue(new File("C:\\tmp\\window1.json"), window1);
問題はwindow1
、タイプのメンバーがTreeSet<TimeSlot<T>>
シリアル化されていないことです。ログに例外は表示されません。TreeSet<TimeSlot<T>>
メンバーを含まないjsonを取得しています。
ジャクソンコードをデバッグしても、私はどこにもつながりませんでした。シリアル化するには何をする必要があるのだろうかTreeSet<TimeSlot<T>>
?
編集
私BaseSlidingWindow
のクラス定義は次のようになります。
public class BaseSlidingWindow<T extends ICountable<T>>
implements ISlidingWindow<T>{
boolean dirty = false;
private DateTime createdOn;
private DateTime updatedOn;
private DateTime windowLifeStart;
private DateTime windowLifeEnd;
private final SlidingWindowConfig slidingWindowConfig;
private TreeSet<TimeSlot<T>> counterTimeSlotSet =
new TreeSet<TimeSlot<T>>(
new Comparator<TimeSlot<T>>(){
@Override
public int compare(TimeSlot<T> cb1, TimeSlot<T> cb2) {
return cb1.getPeriod().compareTo(cb2.getPeriod());
}
});
private final Class firstSeenDataType;
// constructor, accessors and IFS implementations
// ...
}