Mục đích của phương pháp này được giải thích trong tài liệu API như sau:
nó được gọi nếu và khi máy ảo Java xác định rằng không còn bất kỳ phương tiện nào mà đối tượng này có thể được truy cập bởi bất kỳ luồng nào chưa chết, ngoại trừ kết quả của một hành động được thực hiện bởi việc hoàn thiện một số đối tượng khác hoặc lớp đã sẵn sàng để được hoàn thành ...
mục đích thông thường của finalize
... là thực hiện các hành động dọn dẹp trước khi đối tượng bị loại bỏ . Ví dụ: phương thức hoàn thiện cho một đối tượng thể hiện kết nối đầu vào / đầu ra có thể thực hiện các giao dịch I / O rõ ràng để phá vỡ kết nối trước khi đối tượng bị loại bỏ vĩnh viễn ...
Nếu bạn cũng quan tâm đến lý do tại sao các nhà thiết kế ngôn ngữ đã chọn "đối tượng bị loại bỏ" ( rác được thu thập ) theo cách vượt quá sự kiểm soát của lập trình viên ứng dụng ("chúng ta không bao giờ nên dựa vào"), điều này đã được giải thích trong câu trả lời liên quan câu hỏi :
thu gom rác tự động ... loại bỏ toàn bộ các lớp lỗi lập trình mà các lập trình viên C và C ++ gặp phải. Bạn có thể phát triển mã Java với sự tự tin rằng hệ thống sẽ nhanh chóng tìm thấy nhiều lỗi và các vấn đề lớn sẽ không hoạt động cho đến khi mã sản xuất của bạn được chuyển đi ..
Lần lượt, trên trích dẫn, được lấy từ tài liệu chính thức về các mục tiêu thiết kế Java , đó có thể được coi là tài liệu tham khảo có thẩm quyền giải thích lý do tại sao các nhà thiết kế ngôn ngữ Java quyết định theo cách này.
Để thảo luận chi tiết hơn về ngôn ngữ và bất khả tri về sở thích này, hãy tham khảo phần OOSC 9.6 Quản lý bộ nhớ tự động (thực ra, không chỉ phần này mà toàn bộ chương 9 rất đáng đọc nếu bạn quan tâm đến những thứ như vậy). Phần này mở ra với một tuyên bố rõ ràng:
Một môi trường OO tốt sẽ cung cấp một cơ chế quản lý bộ nhớ tự động, nó sẽ phát hiện và lấy lại các đối tượng không thể truy cập, cho phép các nhà phát triển ứng dụng tập trung vào công việc của họ - phát triển ứng dụng.
Các cuộc thảo luận trước sẽ đủ cho thấy tầm quan trọng của việc có sẵn một cơ sở như vậy. Theo lời của Michael Schweitzer và Lambert Strether:
Một chương trình hướng đối tượng không có quản lý bộ nhớ tự động gần giống như một nồi áp suất không có van an toàn: sớm hay muộn điều đó chắc chắn sẽ nổ tung!