如何从类型变量获取ClassLoader(使用泛型对类进行分区)

时间:2014-02-26 12:33:25

标签: java android generics parcelable

我有一个带有泛型类型对象的parcelable类。通常我会读出这样的对象:

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;
  }

  // ...
}

1 个答案:

答案 0 :(得分:0)

您可以像这样

从泛型ClassLoader获取T
this(in.readParcelable(parcelableTypeObject.getClass().getClassLoader()));