2
我想用XMLEncoder/XMLDecoder將序列化支持添加到Scala的案例類中。這裏是我的嘗試:如何將@ConstructorProperties應用於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的,生成的類確實有民意四參數的構造函數和適當的豆乾將的性能驗證。但是,試圖與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>
看來註解不會應用到構造函數。我如何驗證和解決這個問題?
對 - 我也發現了自己。實際上,我覺得這個語法有點奇怪,特別是左括號需要與註釋位於同一行 - 否則編譯器會拒絕它。不管怎樣,謝謝! – 2012-08-15 19:22:36
雖然語法與可見性修飾符的語法一致。例如:'class Foo private(){}' – 2012-08-15 19:39:49
是的,但它看起來很奇怪,而且長註釋看起來更奇怪。無論如何,這只是一個風格問題。再次感謝! – 2012-08-15 19:43:12