【发布时间】:2011-02-11 15:55:01
【问题描述】:
默认情况下可以序列化原始 'void',为什么对象 'Void' 不扩展 Serializable?
添加示例:
RootImplementation 将出现编译错误,提示“Void 不在其范围内”,因为它没有扩展 Serializable。 虽然将 'someMethod' 声明为 'void' 是没有问题的。
public interface Root<R extends Serializable> extends Serializable {
R someMethod();
}
public class RootImplementation implements Root<Void> {
public Void someMethod() {
return null;
}
}
【问题讨论】:
-
没有原始虚空之类的东西。而且 Void 从来没有一个实例,我想不出它会是一个类的一个字段的用例。但如果是,您可以随时将其设为瞬态,因为它始终为空。
-
“默认情况下可以序列化原语'void'”是什么意思?没有要序列化的数据...你能举个例子说明你的意思吗?
-
Jon Skeet 可以序列化
void! -
你可以序列化 Void,主要是 b/c 你不能有类的实例(Constructor.setAccessible(true) 和 Unsafe.allocateInstance(Void.class)不算)
-
旁注:可序列化意味着是一个隐式/标记接口。