Trong Java, các lớp lồng nhau có thể là static
hoặc không. Nếu đúng như vậy static
, chúng không chứa tham chiếu đến con trỏ của thể hiện chứa (chúng cũng không được gọi là các lớp bên trong nữa, chúng được gọi là các lớp lồng nhau).
Việc quên tạo một lớp lồng nhau static
khi nó không cần tham chiếu đó có thể dẫn đến các vấn đề với việc thu gom rác hoặc phân tích thoát.
Có thể tạo ra một lớp bên trong ẩn danh static
không? Hay trình biên dịch tự động tìm ra điều này (mà nó có thể, vì không thể có bất kỳ lớp con nào)?
Ví dụ: nếu tôi tạo một trình so sánh ẩn danh, tôi hầu như không bao giờ cần tham chiếu đến bên ngoài:
Collections.sort(list, new Comparator<String>(){
int compare(String a, String b){
return a.toUpperCase().compareTo(b.toUpperCase());
}
}
Collections.sort(list, String.CASE_INSENSITIVE_ORDER)
hoạt động kể từ Java 2, hãy đọc, vì API Bộ sưu tập tồn tại…