繁体   English   中英

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

[英]How to get ClassLoader from type variable (for parceling a class using generics)

我有一个带有泛型类型对象的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;
  }

  // ...
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM