2015-08-27 2 views
9

Почему Android Intent реализовать Cloneable? Являются ли намерения клонированы?Почему Intent реализует Cloneable?

Нарушение функции clone() implementation Intent при вызове конструктора вместо вызова super.clone(). Подклассы намерения гарантированно нарушат поведение, если оно когда-либо клонировано (соответствует Android bug).

+0

Не, если подклассы переопределяют 'clone()' и делают то же самое: вызывают свой собственный конструктор копирования. --- Я бы сказал, что 'clone()' is * fawed *, не изменяя тип возвращаемого значения на 'Intent', заставляя вызывающего абонента отбрасывать, минуя безопасность типа Java. – Andreas

ответ

0

Почему вы заботитесь о clone(), вы когда-нибудь использовали это (не для намерений, но вообще)? Это как-то сломано в java (http://www.artima.com/intv/bloch13.html), я всегда использую вместо этого конструктор копирования.

Кроме того, насколько я помню, вы действительно не можете продлить Intent. Если вы сделаете это и попытаетесь запустить Activity или Service с этим объектом, вы получите android.os.BadParcelableException: ClassNotFoundException when unmarshalling.

Итак, я не думаю, что вам следует беспокоиться о clone(), особенно для Intent.