Tôi đã thấy các đối tượng được tạo bằng mã Java mà không lưu trữ một tham chiếu đến đối tượng. Ví dụ: trong một plugin nhật thực tôi đã thấy SWT Shell được tạo như vậy:
new Shell();
Đối tượng Shell mới này không được lưu trữ trong một biến, nhưng sẽ vẫn được tham chiếu cho đến khi cửa sổ bị loại bỏ [tôi tin?] Xảy ra theo mặc định khi cửa sổ được đóng.
Có phải thực tế xấu khi tạo các đối tượng như thế này mà không lưu trữ một tài liệu tham khảo đến chúng? Hay là thư viện được thiết kế kém? Điều gì xảy ra nếu tôi không cần tài liệu tham khảo mà chỉ muốn "tác dụng phụ" của đối tượng? Tôi có nên lưu trữ một tài liệu tham khảo dù sao?
CẬP NHẬT:
Phải thừa nhận, ví dụ trên của tôi là kém. Mặc dù tôi đã thấy các phần tử UI được tạo như thế này, nhưng việc tạo một SWT Shell như thế này có thể là vô nghĩa vì bạn cần gọi phương thức mở trên ví dụ Shell. Có các ví dụ tốt hơn được cung cấp bởi aix, chẳng hạn như sau trong hướng dẫn đồng thời Java :
(new HelloThread()).start();
Thực tiễn này được nhìn thấy trong nhiều bối cảnh, vì vậy các câu hỏi vẫn còn. Có phải là thực hành tốt?
Shell.createTopLevelShell()
hoặc bất cứ điều gì, vs sử dụng một constructor trong trường hợp này Nhưng về mặt chức năng có rất ít sự khác biệt..)
dispose()
d: Quy tắc 1: Nếu bạn đã tạo nó, bạn loại bỏ nó. eclipse.org/articles/swt-design-2/swt-design-2.html