java - 如何从类型变量中获取 ClassLoader(用于使用泛型打包类)

标签 java android 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()));

关于java - 如何从类型变量中获取 ClassLoader(用于使用泛型打包类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22041519/

相关文章:

java - 谷歌地图 Android V2 : how to pan map to show InfoWindow

java - Intent 打开 dropbox 以在 Android 中选择图像

java - 如何引用 Java 中使用通配符标识的类的类?

java - 将 GWT 从 2.8.1 升级到 2.8.2 后出现 "XmlRootElement cannot be resolved to a type"错误

java - 为什么不从 excel (*.xlsx) 加载信息(使用 Apache POI)?

java - 在 Java 中解析文本文件

android - 检查用户的 Facebook 个人资料是否已更新

java - 当AsyncTask准备好时通知Activity?

java - 这个符号在 Java 中意味着什么? (比较器<?super T> c)

java - 如何在泛型类中正确键入 no-arg 和 withVar 构造函数?