Aar*_*lla 18 java serialization coding-style
Java包含许多类(如Swing),它们实现了可怕且容易出错的 接口Serializable
.
如果你TableModel
通过扩展来实现一个新的AbstractTableModel
,那么新模型必须是可序列化的,但是如果它包含不可序列化的内部数据类型,并且因为你不打算使用这个特性而不必这样做呢?
在这种情况下,像Sonar这样的工具会变得疯狂.要么抱怨"类Foo
定义非瞬态非可序列化实例字段bar
".
因此,我transient
只是为了得到"该字段Foo.bar
是暂时的,但不是通过反序列化设置"
是否有可能说"不,这个类不可序列化,我不希望它"以这样的方式,你不会在像Sonar这样的工具中出现任何错误?
sky*_*der 25
引用这篇JavaRevisited文章(参见#8):
要避免java序列化,您需要在类中实现writeObject()和readObject()方法,并且需要从这些方法中抛出NotSerializableException.
所以你只需要将它粘贴到你的类中:
private void writeObject(java.io.ObjectOutputStream stream) throws java.io.IOException {
throw new java.io.NotSerializableException( getClass().getName() );
}
private void readObject(java.io.ObjectInputStream stream) throws java.io.IOException, ClassNotFoundException {
throw new java.io.NotSerializableException( getClass().getName() );
}
Run Code Online (Sandbox Code Playgroud)
实现writeObject()
和readObject()
抛出的方法NotSerializableException
要么
http://docs.oracle.com/javase/6/docs/platform/serialization/spec/security.html#4214
归档时间: |
|
查看次数: |
6183 次 |
最近记录: |