我想将此泛型类转换为可打包对象,但是我对问题的概念并不十分清楚。
类:
public class Type<T> implements Parcelable {
// T stands for "Type"
private T t;
public void set(T t) { this.t = t; }
public T get() { return t; }
}
这就是我尝试过的。但我知道这是不正确的,或者可能是不完整的。
public class Type<T> implements Parcelable {
// T stands for "Type"
private T t;
protected Type(Parcel in) {
}
public void set(T t) { this.t = t; }
public T get() { return t; }
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
}
public static final Creator< Type > CREATOR = new Creator< Type >() {
@Override
public Type createFromParcel(Parcel in) {
return new Type(in);
}
@Override
public Type[] newArray(int size) {
return new Type[size];
}
};
}
最佳答案
这与vikas kumar类似,但要保证只能将Parcelable作为T参数传递,这样可以避免出现异常。
public class Type<T extends Parcelable> implements Parcelable {
private T t;
protected Type(Parcel in) {
t = (T) in.readValue(t.getClass().getClassLoader());
}
public static final Creator<Type> CREATOR = new Creator<Type>() {
@Override
public Type createFromParcel(Parcel in) {
return new Type(in);
}
@Override
public Type[] newArray(int size) {
return new Type[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeValue(t);
}
}