3

在实现 Parcelable 接口时,CREATOR 实现通常使用一个构造函数,该构造函数接收一个 Parcel,例如

public Foo(Parcel parcel)

在这个包裹中,我们可能有类似的代码

mMyField = parcel.readParcelable(MyFoo.class.getClassLoader())

据我所知,通常只使用默认的类加载器并传入 null 是可以的,因为 parcel.writeParcelable(mMyField) 已经将类名存储在包中。

所以我的问题是,我什么时候需要使用 MyFoo.class.getClassLoader() 而不是传入 null?

4

1 回答 1

2

由于 aParcel存储有关其类的信息,而不是类本身,因此该类将从名称加载,例如java/util/ArrayList. 如果您的类不在类路径上或.class文件在远程服务器上,即使您需要使用可以访问它的不同 ClassLoader,例如URLClassLoader.

于 2013-09-12T19:31:33.800 回答