Android 泛型数组的可分块性
我使用插件生成parcelable实现,这就是我得到的代码。Android 泛型数组的可分块性,android,generics,parcelable,Android,Generics,Parcelable,我使用插件生成parcelable实现,这就是我得到的代码。 我在编译度量(包裹中)时出错 这可能是因为泛型数组。我怎样才能修好它? 泛型T只能包含字符串、数字或布尔值 public class Metrics<T extends Parcelable> implements Parcelable { private T[] yData; @Override public int describeContents() { return 0;
我在编译
度量(包裹中)
时出错这可能是因为泛型数组。我怎样才能修好它?
泛型T只能包含字符串、数字或布尔值
public class Metrics<T extends Parcelable> implements Parcelable {
private T[] yData;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeTypedArray(this.yData, flags);
}
public Metrics() {
}
protected Metrics(Parcel in) {
this.yData = in.createTypedArray(T.CREATOR);
}
public static final Parcelable.Creator<Metrics> CREATOR = new Parcelable.Creator<Metrics>() {
@Override
public Metrics createFromParcel(Parcel source) {
return new Metrics(source);
}
@Override
public Metrics[] newArray(int size) {
return new Metrics[size];
}
};
}
公共类度量实现了可打包{
私人T[]yData;
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
dest.writetypedaray(this.yData,flags);
}
公共度量(){
}
受保护的度量(包裹中){
this.yData=in.createTypedArray(T.CREATOR);
}
public static final Parcelable.Creator=新建Parcelable.Creator(){
@凌驾
公共度量createFromParcel(地块源){
返回新的度量(源);
}
@凌驾
公共度量[]新数组(整数大小){
返回新的度量值[大小];
}
};
}
您可以使用列表而不是数组:
public class Metrics<T extends Parcelable> implements Parcelable {
private List<T> yData;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
if (yData == null || yData.size() == 0)
dest.writeInt(0);
else {
dest.writeInt(yData.size());
final Class<?> objectsType = yData.get(0).getClass();
dest.writeSerializable(objectsType);
dest.writeList(yData);
}
}
public Metrics() {
}
protected Metrics(Parcel in) {
int size = in.readInt();
if (size == 0) {
yData = null;
} else {
Class<?> type = (Class<?>) in.readSerializable();
yData = new ArrayList<>(size);
in.readList(yData, type.getClassLoader());
}
}
public static final Parcelable.Creator<Metrics> CREATOR = new Parcelable.Creator<Metrics>() {
@Override
public Metrics createFromParcel(Parcel source) {
return new Metrics(source);
}
@Override
public Metrics[] newArray(int size) {
return new Metrics[size];
}
};
}
公共类度量实现了可打包{
私有列表数据;
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
if(yData==null | | yData.size()==0)
目的写入(0);
否则{
dest.writeInt(yData.size());
最终类objectsType=yData.get(0.getClass();
目标可写变量(objectsType);
目的写入列表(yData);
}
}
公共度量(){
}
受保护的度量(包裹中){
int size=in.readInt();
如果(大小==0){
yData=null;
}否则{
.readSerializable()中的类类型=(类);
yData=新阵列列表(大小);
in.readList(yData,键入.getClassLoader());
}
}
public static final Parcelable.Creator=新建Parcelable.Creator(){
@凌驾
公共度量createFromParcel(地块源){
返回新的度量(源);
}
@凌驾
公共度量[]新数组(整数大小){
返回新的度量值[大小];
}
};
}
您可以使用列表而不是数组:
public class Metrics<T extends Parcelable> implements Parcelable {
private List<T> yData;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
if (yData == null || yData.size() == 0)
dest.writeInt(0);
else {
dest.writeInt(yData.size());
final Class<?> objectsType = yData.get(0).getClass();
dest.writeSerializable(objectsType);
dest.writeList(yData);
}
}
public Metrics() {
}
protected Metrics(Parcel in) {
int size = in.readInt();
if (size == 0) {
yData = null;
} else {
Class<?> type = (Class<?>) in.readSerializable();
yData = new ArrayList<>(size);
in.readList(yData, type.getClassLoader());
}
}
public static final Parcelable.Creator<Metrics> CREATOR = new Parcelable.Creator<Metrics>() {
@Override
public Metrics createFromParcel(Parcel source) {
return new Metrics(source);
}
@Override
public Metrics[] newArray(int size) {
return new Metrics[size];
}
};
}
公共类度量实现了可打包{
私有列表数据;
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
if(yData==null | | yData.size()==0)
目的写入(0);
否则{
dest.writeInt(yData.size());
最终类objectsType=yData.get(0.getClass();
目标可写变量(objectsType);
目的写入列表(yData);
}
}
公共度量(){
}
受保护的度量(包裹中){
int size=in.readInt();
如果(大小==0){
yData=null;
}否则{
.readSerializable()中的类类型=(类);
yData=新阵列列表(大小);
in.readList(yData,键入.getClassLoader());
}
}
public static final Parcelable.Creator=新建Parcelable.Creator(){
@凌驾
公共度量createFromParcel(地块源){
返回新的度量(源);
}
@凌驾
公共度量[]新数组(整数大小){
返回新的度量值[大小];
}
};
}
我知道,但我想要阵列。是否可以使用数组?或者唯一的方法是列表?我知道,但我想要数组。是否可以使用数组?或者唯一的办法就是列出清单?