引入注释后,为什么java不能用@Serializable注释替换Serializable
答案 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并不是唯一可以弃用的东西,但是为了向后兼容而没有。