【问题标题】: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 类型安全。

标签: java android android-intent clone


【解决方案1】:

你为什么关心clone(),你有没有使用过这个(不是为了意图,而是根本)?它在 java 中有点坏(http://www.artima.com/intv/bloch13.html),我总是使用复制构造函数来代替。

另外,据我所知,你不能真正扩展Intent。如果您这样做并尝试使用此对象启动ActivityService,您将获得android.os.BadParcelableException: ClassNotFoundException when unmarshalling

所以,我认为您不必担心clone(),尤其是Intents。

【讨论】:

    猜你喜欢
    • 2017-12-26
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 2014-12-11
    • 2013-08-16
    • 2013-11-20
    • 2021-06-09
    • 2010-09-15
    相关资源
    最近更新 更多