System.out
được khai báo là public static final PrintStream out
.
Nhưng bạn có thể gọi System.setOut()
để chỉ định lại nó.
Huh? Làm thế nào điều này là có thể nếu nó final
?
(cùng điểm áp dụng cho System.in
và System.err
)
Và quan trọng hơn, nếu bạn có thể thay đổi các trường cuối cùng tĩnh công khai, điều này có nghĩa là gì đối với các đảm bảo (nếu có) final
cung cấp cho bạn? (Tôi chưa bao giờ nhận ra và cũng không mong đợi System.in/out/err hoạt động như final
các biến)