我有一个带有通用类型对象的可包裹类。通常我会像这样读出该对象:

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

  // ...
}

最佳答案

您可以像这样从通用类型ClassLoader获取T

this(in.readParcelable(parcelableTypeObject.getClass().getClassLoader()));

10-07 13:27