java为什么不用@Serializable注解替换Serializable

Pan*_*031 7 java serialization

引入注解之后,java为什么不把Serializable换成@Serializable注解

Pet*_*rey 7

注释不会被继承。Serializable 接口是继承的。这意味着删除接口不仅会破坏兼容性,而且可能无法用注释替换它,因为行为不一样。

另一个区别是你可以写

void method(Serializable s)
Run Code Online (Sandbox Code Playgroud)

但是您不能对注释执行相同的操作,尽管 ObjectOutputStream.writeObjectObject在任何情况下都采用 an 。


Mag*_*s W 1

我想主要是因为这意味着很多不使用注释的旧代码将开始到处发出编译器警告。

可序列化并不是唯一可以被弃用的东西,但为了向后兼容而没有被弃用。