Bij*_* CD 11 java serialization java-custom-serialization
我们可以使用transient关键字来避免序列化字段.还有其他办法吗?
ada*_*ost 18
http://java.sun.com/javase/6/docs/platform/serialization/spec/security.html
摘要:防止敏感数据的序列化不应序列化包含敏感数据的字段; 这样做会将其值暴露给有权访问序列化流的任何一方.有几种方法可以防止字段序列化:
- 将该字段声明为私有瞬态.
- 定义相关类的serialPersistentFields字段,并省略字段描述符列表中的字段.
- 写一类特定的序列化方法(即,的writeObject或的writeExternal)不字段写入到序列化流(即,通过不调用ObjectOutputStream.defaultWriteObject).
这是一些链接.
这就是瞬态意味着作为关键字.它的全部目的是无论出于何种原因停止数据的序列化.
如果您希望对进程进行更精细的控制,可以使用ObjectOutputStream/ObjectInputStream作为序列化过程一部分使用的writeObject/readObject方法,并且可以将其与某些自定义注释或您想要的任何逻辑相结合.
private void readObject(java.io.ObjectInputStream stream)
throws IOException, ClassNotFoundException;
private void writeObject(java.io.ObjectOutputStream stream)
throws IOException
Run Code Online (Sandbox Code Playgroud)
您可以使用Externalizable接口创建自己的协议,在我看来,它比 Serializable 更好,因为它不包含由 JVM (writeObject和readObject)挂钩的私有方法。Serializable您可以实现Externalizable,而不是实现接口,它包含两个方法:
public void writeExternal(ObjectOutput out) throws IOException;
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
Run Code Online (Sandbox Code Playgroud)
与使用Serializable什么都不一样,现在免费提供。也就是说,协议完全掌握在你手中,覆盖瞬态/非三角场等。
| 归档时间: |
|
| 查看次数: |
11415 次 |
| 最近记录: |