Tôi tình cờ gặp một mã Java tại nơi làm việc của tôi. Đây là kịch bản: Có 2 lớp - ClassA
và ClassB
.biến cố định chung tĩnh trong một lớp java đã nhập
ClassA
không có gì ngoại trừ 4 giá trị chuỗi cuối cùng tĩnh công khai bên trong nó. Mục đích của nó là sử dụng những giá trị như ClassA.variable
(đừng hỏi tôi tại sao, nó không phải là mã của tôi).
ClassB
nhập ClassA
. Tôi đã chỉnh sửa các giá trị chuỗi trong ClassA
và biên dịch nó. Khi tôi chạy ClassB
tôi có thể thấy nó đang sử dụng các giá trị cũ - không phải là giá trị mới. Tôi đã phải biên dịch lại ClassB
để làm cho nó sử dụng các giá trị mới từ ClassA
! (Tôi đã phải biên dịch lại các lớp khác nhập ClassA
!)
Đây có phải là do JDK 1.6 hoặc tôi nên biết trước đó để biên dịch lại ClassB
cũng! Soi sáng cho tôi. :)
vì vậy, bạn đang nói kết quả tĩnh công khai là hằng số thời gian biên dịch? không biết điều đó. nghĩ rằng đó chỉ là một hằng số và không thể sửa đổi trong thời gian chạy! Cảm ơn bạn đã giúp đỡ. –
Anwser tốt. Nếu bạn muốn thấy rằng biến đang được inlined, bạn có thể sử dụng javap để xem cách lớp được biên dịch, ví dụ: "javap -c Flags". –