我有以下代码
private static class ParcelableParser<T> {
private ArrayList<T> parse(List<Parcelable> parcelables) {
ArrayList<T> parsedData = new ArrayList<T>();
for(Parcelable parcelable : parcelables) {
parsedData.add((T) parcelable);
}
return parsedData;
}
}
它被称为如下
ParcelableParser<SomeClass> cellParser = new ParcelableParser<SomeClass>();
cellParser.parse(bundle.getParcelableArrayList("some String"));
它发出警告Type safety: Unchecked cast from Parcelable to T
。
不管我做什么,我总是有一些令人讨厌的编译错误。我已阅读有关 PECS 规则的信息,但我无法在此处应用它。
示例解决方案(不编译)
private static class ParcelableParser<T extends Parcelable> {
private ArrayList<T> parse(List<T> parcelables) {
ArrayList<T> parsedData = new ArrayList<T>();
for(T parcelable : parcelables) {
parsedData.add((T) parcelable);
}
return parsedData;
}
}
使用它作为
return new ParcelableParser<SomeClass>()
.parse(bundle.getParcelableArrayList("SomeString"));
产品
The method parse(List<SomeClass>) in the type MyClass.ParcelableParser<SomeClass> is not applicable for the arguments (ArrayList<Parcelable>)