Java:关键字 "this"和Serialization

标签 java

我有一个简单的类,如下所示。

我想用这个类实现的所有目的是将实例序列化为字节数组,但我不断收到 java.io.NotSerializableException

我的代码有什么问题?

this 只是一个指向调用构造函数时创建的实例的指针,而不是实际的实例对象吗?

class XXX {
  private String someStr;

  public XXX(String someStr){
    this.someStr = someStr;
  }

  public byte[] toByteArray(){
        byte[] output = null;
        try(ByteArrayOutputStream out = new ByteArrayOutputStream(); 
        ObjectOutputStream stream = new ObjectOutputStream(out)) {
            stream.writeObject(this);
            output = out.toByteArray();
        }catch(Exception e){
        }
        return output;
    }

}

XXX aX = new XXX("some string");
aX.toByteArray();

最佳答案

来自 NotSerializableException

Thrown when an instance is required to have a Serializable interface. The serialization runtime or the class of the instance can throw this exception. The argument should be the name of the class.

您需要在您的类中实现Serializable 接口(interface)

class XXX implements Serializable {
 ...
}

在这里查看输出 ideone.com

[-84, -19, 0, 5, 115, 114, 0, 6, 73, 100, 101, 111, 110, 101, 107, -60, 36, 124, 45, 63, 13, 80, 2, 0, 1, 76, 0, 7, 115, 111, 109, 101, 83, 116, 114, 116, 0, 18, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 83, 116, 114, 105, 110, 103, 59, 120, 112, 116, 0, 11, 115, 111, 109, 101, 32, 115, 116, 114, 105, 110, 103]

关于Java:关键字 "this"和Serialization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36176817/

相关文章:

java - 提交表单时出现 Spring 日期转换错误

java - 如何使用 YouTube Data API (v3) 查询/检索关键字

java - 运行 jar 文件内的批处理文件

java - 使用 Java 在数据库中存储 IPv4 的最佳方式

java - 用Java计算两个日期之间的天数

java - 导入 libcore.io.DiskLruCache 失败

java - 在 Java 类中进行模拟

java - 使用 JNI 调用主机二进制文件中的 C 函数

java - setDisplayHomeAsUpEnabled 不显示带有自定义操作栏 View 的后退箭头

java - 从相似歌曲之间的字符串中获取字符