Gọi địa phương
public
class
InvocationLocal
extends Object
java.lang.Object | |
↳ | com.android.tradefed.Callbackr.logger.InvocationLocal<T> |
Lớp này cung cấp các biến phạm vi lệnh gọi.
Cơ chế này hoạt động tương tự như ThreadLocal
. Những biến này khác với
các bản sao thông thường trong mã đó trong lệnh gọi truy cập vào một (thông qua phương thức get
)
có bản sao riêng, được khởi tạo độc lập của biến. InvocationLocal
thực thể
thường là các trường tĩnh riêng tư trong các lớp muốn liên kết trạng thái với lệnh gọi.
Mỗi lệnh gọi được liên kết với một bản sao của một biến trong phạm vi lệnh gọi, miễn là
đang thực hiện lệnh gọi và có thể truy cập vào thực thể InvocationLocal
. Sau một
lệnh gọi đã hoàn tất, tất cả bản sao của các thực thể cục bộ của lệnh gọi đều có thể bị hỏng
tập hợp (trừ phi có các tham chiếu khác đến những bản sao này).
Xin lưu ý rằng không giống như các thực thể ThreadLocal
không còn được tham chiếu trong khi
vẫn đang thực hiện lệnh gọi nhưng không thu thập dữ liệu rác được. Tạo thực thể cục bộ hoặc không tĩnh
do đó không được đề xuất vì chúng có thể phát triển mà không bị ràng buộc.
Cảnh báo: Sử dụng lớp này một cách thận trọng vì lệnh gọi cục bộ là các biến toàn cục được tôn vinh với nhiều sai lầm tương tự.
Tóm tắt
Hàm khởi tạo công khai | |
---|---|
InvocationLocal()
|
Phương thức công khai | |
---|---|
final
T
|
get()
Trả về bản sao của lệnh gọi hiện đang thực thi của biến gọi cục bộ này. |
Phương thức được bảo vệ | |
---|---|
T
|
initialValue()
Trả về "giá trị ban đầu" của lệnh gọi hiện tại cho biến lệnh gọi cục bộ này. |
Hàm khởi tạo công khai
Gọi địa phương
public InvocationLocal ()
Phương thức công khai
get
public final T get ()
Trả về bản sao của lệnh gọi hiện đang thực thi của biến gọi cục bộ này. Nếu
biến không có giá trị cho lệnh gọi hiện tại, thì đầu tiên biến sẽ được khởi tạo với giá trị đó
được lệnh gọi phương thức initialValue()
trả về.
Giá trị trả về | |
---|---|
T |
bản sao lệnh gọi đang thực thi của lệnh gọi cục bộ này. |
Phương thức được bảo vệ
initialValue
protected T initialValue ()
Trả về "giá trị ban đầu" của lệnh gọi hiện tại cho biến lệnh gọi cục bộ này. Chiến dịch này
sẽ được gọi vào lần đầu tiên thực thi mã trong bối cảnh của lệnh gọi
truy cập vào biến bằng phương thức get()
. Phương thức này đảm bảo sẽ được gọi
tối đa một lần cho mỗi lần gọi.
Cách triển khai này chỉ trả về null
nhưng bạn có thể thay đổi bằng cách phân loại con InvocationLocal
và ghi đè phương thức này.
Giá trị trả về | |
---|---|
T |
giá trị ban đầu cho biến trong phạm vi lệnh gọi này |