Ответ 1
В настоящее время Eclipse не предоставляет такой опции... Документация Eclipse для организации импорта (версия Kepler).
Однако, с вымыслом вы можете достичь того же результата...
Eclipse позволяет вам предоставить список классов/пакетов для фильтрации. Для этого перейдите в раздел "Настройки" > "Фильтры типов".
Я сделал это в своей среде, чтобы гарантировать, что "java.awt.List" не предлагается, когда я действительно хочу "java.util.List".
Что вы хотите, так это добавить все устаревшие классы в этот список.
Этот список поддерживается в настройках рабочей области eclipse...
File ... C:\Users\[YOUR_USER_NAME]\workspace\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.jdt.ui.prefs
Property ... org.eclipse.jdt.ui.typefilter.enabled=java.awt.List;
Все, что требуется, это создание списка устаревших классов и сохранение его в этом файле свойств.
Eclispe может помочь создать этот список...
Выполните "Поиск по Java" для "Устаревший".
Затем группируйте результаты по типу.
И скопируйте результаты, используя "Копировать квалификационное имя"
Результаты будут содержать Generics, и это должно быть удалено. Например, "javafx.scene.control.Cell <T> " следует читать "javafx.scene.control.Cell".
В дополнение к содержанию устаревших классов, результаты также будут содержать любой класс, который имеет слово "Устаревший". Это может быть комментарий или аннотация метода. Этот список нужно будет фильтровать, чтобы сохранить только устаревшие классы.
script ниже обрабатывает этот список классов для удаления генериков и отфильтровывает классы, которые не устарели (т.е. имеют только отклонение метода). Список классов считывается из файла с именем "DeprecatedClassList.txt". Когда он не может проверить аннотацию класса, он пропускает класс и распечатывает его (для ручной проверки).
import java.lang.annotation.Annotation;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class ConfigurationGenerator {
public static void main(String[] args) throws Exception {
List<String> cleanedList = Files
.readAllLines(Paths.get("DeprecatedClassList.txt")).stream()
.map(ConfigurationGenerator::removeGenerics)
.filter(ConfigurationGenerator::hasDeprecatedConstructor)
.collect(Collectors.toList());
String propertyName = "org.eclipse.jdt.ui.typefilter.enabled=";
String propertyValue = String.join(";", cleanedList).concat(";");
String configuration = propertyName + propertyValue;
System.out.println("Configuration property...");
System.out.println(configuration);
}
public static String removeGenerics(String className) {
int openingBracket = className.indexOf("<");
if (openingBracket == -1)
return className;
else
return className.substring(0, openingBracket);
}
public static boolean hasDeprecatedConstructor(String className) {
Class theClass = null;
try {
theClass = Class.forName(className);
} catch (Throwable e) {
// Ignore bad results
System.out.println("Skipping: " + className);
return false;
}
Annotation[] annotations = theClass.getAnnotations();
Optional<Annotation> deprecatedConstructor = Stream
.of(annotations)
.filter(annotation -> annotation.toString().equals(
"@java.lang.Deprecated()")).findAny();
return deprecatedConstructor.isPresent();
}
}
Однако существует одна проблема с этим подходом. Вы можете использовать устаревший класс, если не устаревшая версия не существует. Вы не увидите устаревший класс, если он был целенаправленно скрыт. Чтобы устранить это, просто убедитесь, что вы исключили их из фильтра.