我想将 XMLEncoder/XMLDecoder 的序列化支持添加到 Scala 中的案例类中。这是我的尝试:
@ConstructorProperties(Array("sequenceNumber", "nanosecondsTotal", "bytesTotal", "timeMillis"))
final case class IoStatistics(
@BeanProperty sequenceNumber: Long,
@BeanProperty nanosecondsTotal: Long,
@BeanProperty bytesTotal: Long,
@BeanProperty timeMillis: Long = System.currentTimeMillis
) {
...
}
我可以使用 javap 验证生成的类确实具有公共的四参数构造函数和属性的适当 bean getter。但是,当尝试使用序列化实例时,XMLEncoder
我得到以下控制台输出:
java.lang.InstantiationException: net.java.truevfs.ext.jmx.model.IoStatistics
Continuing ...
java.lang.Exception: XMLEncoder: discarding statement XMLEncoder.writeObject(IoStatistics);
Continuing ...
输出是:
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.7.0_06" class="java.beans.XMLDecoder">
</java>
似乎注释未应用于构造函数。我该如何验证和解决这个问题?