Obecnie Eclipse nie zapewnia takiej opcji ... Eclipse Documentation for Organise Imports (Kepler version).
Jednak z krówki można osiągnąć ten sam rezultat ...
Eclipse pozwala dostarczyć listę zajęć/pakietów do filtrowania-out. Aby to zrobić, przejdź do Preferencje> Wpisz filtry.
Robiłem to w moim otoczeniu, aby zapewnić „java.awt.List” nie sugeruje się, kiedy naprawdę chcesz „java.util.List”.
To, czego chcesz, to dodać wszystkie nieaktualne klasy do tej listy.
Lista ta jest utrzymywana w Eclipse preferencje obszaru roboczego ...
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;
Wszystko, co jest wymagane jest, aby utworzyć listę nieaktualnych klas i zapisać go w pliku ogłoszenia.
Eclispe może pomóc w utworzeniu tej listy ... Wykonaj "Wyszukiwanie Java" dla "Przestarzałe".
Następnie grupuj wyniki według typu.
i skopiować wyniki przy użyciu „Copy Nazwa kwalifikowany”
Wyniki będą zawierać Generics, co powinno zostać usunięte. Na przykład "javafx.scene.control.Cell <T>" powinien przeczytać "javafx.scene.control.Cell".
Oprócz zawierających nieaktualne klasy, wyniki będą również zawierać dowolną klasę, która ma wyraz "Przestarzałe". Może to być komentarz lub adnotacja metody. Ta lista będzie musiała być filtrowana, aby zachować tylko przestarzałe klasy.
Poniższy skrypt przetwarza tę listę klas, aby usunąć generyczne i odfiltrować klasy, które nie są nieaktualne (tzn. Ma tylko wycofanie metod).Lista klas jest odczytywana z pliku o nazwie "DeprecatedClassList.txt". Gdy nie można sprawdzić adnotacji klasy, pomija klasę i drukuje ją (do ręcznego sprawdzania).
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();
}
}
Jest jednak jeden problem z tym podejściem. Możesz użyć nieaktualnej klasy, gdy nie-nieaktualna wersja nie istnieje. Nie zobaczysz wycofanej klasy, jeśli została celowo ukryta. Aby rozwiązać ten problem, po prostu upewnij się, że wykluczyłeś je z filtra.