gpt4 book ai didi

java - 可序列化的条件是什么?

转载 作者:行者123 更新时间:2023-12-01 11:24:33 26 4
gpt4 key购买 nike

假设我有一个 java 类 MyClass,它不是从任何类继承的。 MyClass 实现 Serialized

在没有其他条件的情况下,MyClass 可以Serialized 吗?它是否取决于 MyClass 包含哪些对象,以及这些对象本身是否可Serialized

例如在下面的类中,如果Mappedoodle2没有实现Serializable,那么当Mappedoodle序列化时我会得到异常吗?

import java.io.Serializable;

public class Mappedoodle implements Serializable {
private static final long serialVersionUID = -1760231235147491826L;
private String text;
private int value;
private Mappedoodle2 mm = new Mappedoodle2();

public Mappedoodle(String text, int value) {
this.text = text;
this.value = value;
}

public String getText() {
return text;
}

public int getValue() {
return value;
}

@Override
public String toString() {
return text + ", " + value;
}

}

最佳答案

为了序列化对象,我假设您使用的是 ObjectOutputStream。以下是一些相关文档:http://docs.oracle.com/javase/7/docs/api/java/io/ObjectOutputStream.html#writeObject(java.lang.Object)

该部分描述了如何编写对象的基础知识。该流写入以下内容:

  • 对象所属的类
  • 签名(公共(public)类 Mappedoodle 实现 Serialized)
  • 所有既不是 transient 也不是静态的字段

作为对象的每个字段也将被写入流中。这意味着每个字段都必须实现Serialized。如果没有,您将收到 NotSerializedException

您有几个选项可以实现此目的:

  • 使 Mappedoodle2 可序列化
  • 将字段设置为 mm transient,这仅意味着它不会被序列化。

关于java - 可序列化的条件是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30947504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com