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

时间:2016-03-30 18:34:03

标签: java serialization

引入注释后,为什么java不能用@Serializable注释替换Serializable

2 个答案:

答案 0 :(得分:4)

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

另一个区别是你可以写

USE DataMigration

GO

DECLARE @XML AS XML, @hDoc AS INT, @SQL NVARCHAR (MAX)

SELECT @XML = ArticlesXMLData FROM ArticlesXML

EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML

SELECT ArticleName
FROM OPENXML(@hDoc, 'Articles/sv:node')
WITH 
(
   ArticleName [varchar](100) '@sv:name'
)

EXEC sp_xml_removedocument @hDoc

GO

但是你不能对注释做同样的事情,尽管ObjectOutputStream.writeObject在任何情况下都需要void method(Serializable s)

答案 1 :(得分:1)

我认为主要是因为它意味着很多不使用注释的旧代码会开始在整个地方发出编译器警告。

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