Здравствуйте, PorcoRosso, Вы писали:
PR>PR>public class Skin {
PR> public String Name;
PR> private ArrayList<Section> Sections = new ArrayList<Section>(); // Та самая коллекция объектов, которую надо заполнить, тип - стандартный java.util.ArrayList
PR> public void Parse(XmlPullParser parser) throws Exception {
PR> this.Name = ParserHelper.GetString(parser, "Name", "Unnamed skin");
PR> ParserHelper.ParseCollections(parser, "Sections", this.Sections); // пытаемся заполнить коллекцию
PR> }
PR>}
PR>public final class ParserHelper {
PR> private static void ParseCollection(XmlPullParser parser, String name, ArrayList<? extends Object> coll) throws Exception {
PR> for (НЕВАЖНО) {
PR> Object item = ParserHelper.ParseObject(parser, name); // В общем откуда-то получили нужный объект, это Section в данном случае
PR> coll.add(item); // а вот эта строка не компилируется
PR> }
PR> }
PR>}
PR>
Ну, всё правильно. Смысл в чем. Если бы можно было добавить Object в коллекцию, то ты бы в ArrayList<Section> мог бы засунуть любой тип. Это "типа" не безопасно.
Решение должно быть где-то таким. Придется либо ParseObject() делать типобезопасным. Либо тупо кастить в этом методе к T.
public final class ParserHelper {
private static <T> void ParseCollection(XmlPullParser parser, String name, ArrayList<T> coll, Class collectionType) throws Exception {
for (НЕВАЖНО) {
T item = ParserHelper.ParseObject(parser, name, collectionType); // В общем откуда-то получили нужный объект, это Section в данном случае
coll.add(item); // а вот эта строка не компилируется
}
}
}
И бросайте свои .NETовские привычки называть методы с большой буквы.