Вам необходимо узнать о Java Generics.Старый стиль 1.4 по-прежнему будет компилироваться, но он будет делать это с предупреждениями (некоторые считают ошибки).
Поскольку используемые вами классы ожидают параметры Generic Type, их необходимо указывать компилятору, например, так:
//This is line 40
private final List<FileDescription> fileList = Collections.synchronizedList(new ArrayList<FileDescription>());
//This is line 88
public void doUpload(FileEntryEvent e) {
FileEntry file = (FileEntry) e.getSource();
FileEntryResults result = file.getResults();
for (FileInfo fileInfo : result.getFiles()) {
if (fileInfo.isSaved()) {
FileDescription fd =
new FileDescription(
(FileInfo) fileInfo.clone(), getIdCounter());
synchronized (fileList) {
fileList.add(fd); //This is line 97
}
}
}
}
Обратите внимание, что при использовании дженериков некоторые типы приведения больше не нужны.Например, fileList.get(0)
вернет FileDescription
в приведенном выше примере, без необходимости явного приведения.
Параметр generics указывает, что все, что хранится в fileList
, должно быть «по крайней мере»"Описание файла.Компилятор проверяет, что невозможно поместить в список элементы, не относящиеся к FileDescription, и что выходной код фактически не выполняет никаких проверок во время выполнения.Таким образом, генерики на самом деле не страдают от ударов производительности, как аналогичные методы в других языках, однако «стирание типов», предварительно сформированное компилятором, делает невозможными определенные технические операции, такие как анализ типов во время выполнения для универсального параметра.
они вам понравятся.
Если этот код был написан до выпуска Generics, вы можете скомпилировать его с флагами обратной совместимости (-source 1.4 -target 1.4).