Я пытаюсь создать метод, который возвращает ArrayList одного из двух типов на основе типа класса, переданного через метод.
public ArrayList<? extends Object> loadDataToList(Class<?> cls)
{
ArrayList<? extends Object> returnList = null;
File fileToLoad = null;
Object loadObject = null;
if (cls == CPassenger.class)
{
returnList = new ArrayList<CPassenger>();
fileToLoad = passengerFile;
loadObject = new CPassenger();
}
else if (cls == CFlightRecord.class)
{
returnList = new ArrayList<CFlightRecord>();
fileToLoad = flightRecordFile;
loadObject = new CFlightRecord();
}
else
{
return null;
}
boolean EOF = false;
try
{
ObjectInputStream in = new ObjectInputStream (new FileInputStream
(fileToLoad.getName()));
while (!EOF)
{
try
{
loadObject = cls.cast(in.readObject());
// Error is here.
returnList.add(loadObject);
} // try
catch (EOFException e)
{
EOF = true;
}
} // while (!EOF)
in.close ();
} // try
catch (Exception e)
{
e.printStackTrace (System.out);
}
return returnList;
}
Ошибка, которую я получаю при попытке добавить loadObject в returnList: Метод add(capture#6-of? extends Object) в типе ArrayList<capture#6-of ? extends Object>
неприменим для аргументов (Object).
Почему метод add не принимает loadObject?