Trong khi xem xét mã nguồn Java API, tôi thường thấy các tham số phương thức được gán lại cho các biến cục bộ. Tại sao điều này lại được thực hiện?Tại sao các tham số phương thức được gán lại cho các biến cục bộ?
void foo(Object bar) {
Object baz = bar;
//...
}
Đây là trong java.util.HashMap
public Collection<V> values() {
Collection<V> vs = values;
return (vs != null ? vs : (values = new Values()));
}
Bạn vui lòng cho chúng tôi một vài phương pháp ví dụ để xem? – jjnguy
Tôi nghĩ Doug Lea được biết là làm điều này trong gói 'đồng thời'? Có lẽ tôi đã sai, mặc dù (trong trường hợp tôi xin lỗi). Related/dupe: http://stackoverflow.com/questions/3080074/why-would-anyone-make-additional-local-variable-just-to-put-final-keyword-on-it và http: // stackoverflow. com/questions/2785964/in-arrayblockingqueue-why-copy-final-member-field-into-local-final-variable; OK, tôi đã nhận được nó hơi sai, nhưng Doug Lea làm điều gì đó tương tự với các biến cục bộ 'final'. – polygenelubricants
Có thể trùng lặp của [Tại sao nó không sử dụng trường cá thể trực tiếp, nhưng gán nó cho một biến cục bộ?] (Https://stackoverflow.com/questions/7943763/why-it-doesnt-use-the-instance- field-directly-but-assigns-it-to-a-local-variab) – anacron