【问题标题】:Can't implement Parcelable if properties of object are non-parcelable?如果对象的属性不可打包,则无法实现 Parcelable?
【发布时间】:2014-04-20 01:17:31
【问题描述】:

假设我有以下类结构

public class SipService implements Parcelable{

public SipCore sipcore;
public PhoneRinger phoneringer;
public CurrentML currentml;
public AManager amanager;
//etc...
}

SipService 的所有属性都是不可打包的类。并且这些属性的属性是不可分割的类。那些属性的那些属性的属性是不可分割的类。并且这些属性的属性等......是不可打包的类。

我无权访问 SipService 属性的任何这些类的源代码。

这是否意味着SipService无法成功实现Parcelable?

【问题讨论】:

  • 你可以访问这些类的所有变量吗?
  • 我无权访问所有这些类的变量。这些类属于另一个团队管理的其他对象库。他们不会授权我进行任何更改。

标签: android parcelable


【解决方案1】:

因为您无法访问类的所有成员变量并且无法更改它,所以您无法使 SipService 可打包。

如果您有访问权限,您可以读取 SipService 中类的所有变量并创建它们的新实例。但为此,您需要每个类的 getter 和适当的构造函数来重建它们。

如果这些类实现了 Serializable 接口,您可以使其可序列化。因为它的行为几乎相同,但如果类实现 parcelable,性能会更好。

如果您可以与团队交谈,建议他们实现 parcelable/serializable 接口(如果这是一个合理的要求)。

【讨论】:

  • 可串行化是否具有与可包裹性相似的要求? IE。对象的所有属性也必须实现可序列化?
  • 是的,应该是一样的
  • 好的,谢谢史蒂夫,那么这是我的下一个问题stackoverflow.com/questions/23174294/…
猜你喜欢
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
  • 2015-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多