Hiện tại, Eclipse không cung cấp tùy chọn như vậy ... Eclipse Documentation for Organise Imports (Kepler version).
Tuy nhiên, với một kẹo mềm bạn có thể đạt được kết quả tương tự ...
Eclipse cho phép bạn để cung cấp một danh sách các lớp/gói để lọc ra. Để thực hiện việc này, hãy điều hướng đến Tùy chọn> Loại bộ lọc.
Tôi đã làm điều này trong môi trường của tôi để đảm bảo "java.awt.List" không được đề nghị khi tôi thực sự muốn "java.util.List".
Điều bạn muốn là thêm tất cả các lớp không dùng nữa vào danh sách này.
Danh sách này được duy trì trong tùy chọn không gian làm việc của bạn thực ...
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;
Tất cả những gì được yêu cầu là bạn tạo ra một danh sách các lớp phản đối, và lưu nó trong tập tin thuộc tính này.
Eclispe có thể giúp tạo danh sách này ... Thực hiện "Tìm kiếm Java" cho "Không được chấp nhận".
Sau đó nhóm kết quả theo loại.
Và sao chép các kết quả sử dụng "Copy Qualified Name"
Kết quả sẽ chứa Generics, và điều này cần được loại bỏ. Ví dụ: "javafx.scene.control.Cell <T>" nên đọc "javafx.scene.control.Cell".
Ngoài việc chứa các lớp không dùng nữa, kết quả cũng sẽ chứa bất kỳ lớp nào có từ "Không được chấp nhận". Đây có thể là chú thích hoặc chú thích phương thức. Danh sách này sẽ cần được lọc để chỉ giữ lại các lớp không dùng nữa.
Tập lệnh dưới đây xử lý danh sách lớp học này để loại bỏ generics và lọc ra các lớp không bị phản đối (nghĩa là, chỉ có phương thức không dùng nữa).Danh sách lớp được đọc từ một tệp có tên "DeprecatedClassList.txt". Khi nó không thể kiểm tra chú thích lớp, nó bỏ qua lớp và in nó ra (để kiểm tra thủ công).
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();
}
}
Có một vấn đề với cách tiếp cận này. Bạn có thể muốn sử dụng lớp không được dùng nữa khi phiên bản không được chấp nhận không tồn tại. Bạn sẽ không thấy lớp không được dùng nữa nếu nó đã được cố ý ẩn. Để giải quyết điều đó, chỉ cần chắc chắn bạn loại bỏ chúng khỏi bộ lọc.