我有以下代碼如何從我的方法中刪除'unchecked'警告?
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」));
prodces
The method parse(List<SomeClass>) in the type MyClass.ParcelableParser<SomeClass> is not applicable for the arguments (ArrayList<Parcelable>)
「T」的界限是什麼? – PeterK 2014-10-17 12:09:22
由於您不知道哪種類型的Parcelable擴展,您寧願假設它擴展了'T',您必須確保每個Parcelable擴展'T'來清除警告。 – Smutje 2014-10-17 12:09:25
你收到了什麼編譯錯誤? – vikingsteve 2014-10-17 12:10:05