Intent为啥要实现Cloneable?
Posted
技术标签:
【中文标题】Intent为啥要实现Cloneable?【英文标题】:Why does Intent implement Cloneable?Intent为什么要实现Cloneable? 【发布时间】:2015-11-22 04:04:36 【问题描述】:为什么android的Intent
实现Cloneable
?是否曾经克隆过 Intent?
Intent 的clone()
implementation 被破坏,因为它调用构造函数而不是调用super.clone()
。 Intent 的子类在被克隆时保证会发生错误行为(对应 Android bug)。
【问题讨论】:
如果子类覆盖clone()
并做同样的事情,则不会:调用它们自己的复制构造函数。 --- 我会说clone()
是有缺陷的,因为没有将返回类型更改为Intent
,强制调用者强制转换,绕过Java 类型安全。
【参考方案1】:
你为什么关心clone()
,你有没有使用过这个(不是为了意图,而是根本)?它在 java 中有点坏(http://www.artima.com/intv/bloch13.html),我总是使用复制构造函数来代替。
另外,据我所知,你不能真正扩展Intent
。如果您这样做并尝试使用此对象启动Activity
或Service
,您将获得android.os.BadParcelableException: ClassNotFoundException when unmarshalling
。
所以,我认为您不必担心clone()
,尤其是Intent
s。
【讨论】:
以上是关于Intent为啥要实现Cloneable?的主要内容,如果未能解决你的问题,请参考以下文章
android activity之间传递对象 对象为啥要序列化