Nếu bạn biên soạn lại một lớp bên trong (hoặc xem nó sử dụng gỡ lỗi), bạn có thể thấy rằng có tạo mã để truy cập vào cá thể của lớp ngoài được sử dụng để tạo chúng. Chi phí cho điều này là nhiều bộ nhớ cho con trỏ bổ sung, nhiều cpu hơn cho việc thu gom rác vì con trỏ bổ sung cần kiểm tra, và nếu bạn muốn chọn nit, thời gian biên dịch dài hơn. Tạo các cá thể của các lớp bên trong không tĩnh phức tạp hơn một chút bởi vì bạn cần một cá thể của lớp bên ngoài để tạo chúng.
Có thể kiểm soát khả năng hiển thị của cả lớp tĩnh và không tĩnh. Thông thường chúng là riêng tư nếu việc triển khai của chúng được liên kết chặt chẽ với các chi tiết bên trong của lớp bên ngoài và nhà phát triển không nghĩ rằng mã có thể được sử dụng lại. Theo nghĩa này, chúng không tốt hơn các hàm riêng. Các lớp bên trong có thể được công khai trong các trường hợp như Map.Entry, nơi lớp bên trong được kết nối chặt chẽ với giao diện được lớp tiếp xúc và nhà phát triển không nghĩ rằng Map.Entry có thể được sử dụng mà không có một loại Bản đồ. Cả hai loại có quyền truy cập vào các thành viên riêng của lớp bên ngoài và lớp bên ngoài có quyền truy cập vào các thành viên riêng của lớp bên trong.
Trường hợp của các lớp bên trong tĩnh và không tĩnh là rác được thu thập như mọi lớp khác.Không có kết nối đặc biệt nào giữa bộ sưu tập grabage của lớp bên ngoài và bộ sưu tập rác của lớp bên trong.
Trong trường hợp triển khai các lớp UI như xoay hoặc android, bạn sẽ thấy các lớp bên trong tĩnh vì chúng được xử lý như hàm riêng tư. Các lớp này không được phát triển để có thể sử dụng lại bên ngoài lớp bên ngoài và được kết nối chặt chẽ với việc thực hiện bên trong lớp bên ngoài. Không có lý do gì để phơi bày chúng và để đảm bảo chúng có thể làm việc trong nhiều trường hợp hơn là bối cảnh cụ thể của các yêu cầu lớp ngoài.
Đó là sự thật, nhưng có nhiều hơn - đôi khi bạn không có một tham chiếu đến lớp bên ngoài và vẫn muốn khởi tạo bên trong (nếu nó có thể nhìn thấy). – ognian
+1 cho ấn tượng những gì trình biên dịch sẽ tạo ra từ nguồn đầu vào – Seven
Không thể một lớp bên trong không tĩnh khai báo rõ ràng một tham chiếu đến bên ngoài (chỉ cần tự khởi tạo nó), do đó cho tốt nhất của cả hai thế giới: tham chiếu ngoài mà không có chi phí bộ nhớ tĩnh? Ngoài ra, không phải là một lớp bên trong tĩnh không reentrant, do đó hữu ích chỉ trong trường hợp một trường hợp duy nhất của nó là cần thiết? – samosaris