我有一个带有通用类型对象的可打包类。通常我会像这样读出那个对象:
in.readParcelable(MyParcelableClass.class.getClassLoader())
显然我不能用通用类型变量来做到这一点。请参阅下面的代码。谁能指出我正确的方向?
public class ParcelableOverlayItem<T extends Parcelable> extends OverlayItem implements Parcelable {
private T parcelableTypeObject;
protected ParcelableOverlayItem(Parcel in) {
this(in.readParcelable(T.class.getClassLoader())); // this is not working: "Cannot select from a type variable"
}
public void writeToParcel(Parcel dest, int flags) {
dest.writeParcelable(parcelableTypeObject, flags);
}
public ParcelableOverlayItem(T parcelableTypeObject) {
super();
this.parcelableTypeObject = parcelableTypeObject;
}
public T getParcelableTypeObject() {
return parcelableTypeObject;
}
// ...
}
最佳答案
你可以像这样从泛型T
获取ClassLoader
this(in.readParcelable(parcelableTypeObject.getClass().getClassLoader()));
关于java - 如何从类型变量中获取 ClassLoader(用于使用泛型打包类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22041519/