gpt4 book ai didi

java - 不可序列化对象的数组是否可序列化?

转载 作者:行者123 更新时间:2023-12-01 06:15:05 25 4
gpt4 key购买 nike

据我所知,“com.google.api.services.drive.model.File”不可序列化。当我查找时here它没有实现可序列化,当我尝试将其作为可序列化的 Intent 时(如下所示),我收到一个编译器错误阻止我。

但是,如果我将这些不可序列化的文件包装到一个数组中,当我将其作为可序列化的 Intent 写入时,我不会收到编译器警告。我认为它肯定会导致运行时错误——也许编译器只是看不到我在数组中保存了不可序列化的对象。

好奇心战胜了我,我进行了测试,令我惊讶的是它成功了。我成功地将我的文件数组广播到组件,并从中检索数据。

那么有人可以向我解释一下为什么会这样吗?

    Intent intent = new Intent();
String key = "key";

//com.google.api.services.drive.model.File is not serializable (I think)
com.google.api.services.drive.model.File file = new File();
com.google.api.services.drive.model.File[] files = new File[]{};

intent.putExtra(key, files); // yet serializing array of files, no compiler error
intent.putExtra(key, file); // putting just one file, compiler error.

编辑:我知道包装未序列化的文件会使 java 将其检查为可序列化,但是如果该类具有私有(private)字段会发生什么?实际上 File 确实有私有(private)字段(尽管有很多公共(public) get/sets)...,序列化如何记录私有(private)字段 - 它不是应该被保留吗?换句话说,某些字段是私有(private)的,是否存在数据丢失的风险,或者类现在只是将所有内容交给序列化过程?

最佳答案

Serialized只是一个标记接口(interface),告诉编译器您希望您的对象能够被序列化。由于数组是可序列化的,因此它们的内容将被序列化。

关于java - 不可序列化对象的数组是否可序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26827854/

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