Gọi địa phương

public class InvocationLocal
extends Object

java.lang.Object
   ↳ com.android.tradefed.invoker.logger.InvocationLocal<T>


Lớp này cung cấp các biến phạm vi gọi.

Cơ chế này hoạt động tương tự như ThreadLocal. Các biến này khác với các biến thông thường trong mã đó trong một lệnh gọi truy cập vào một biến (thông qua phương thức get) có bản sao biến được khởi tạo độc lập riêng. Các thực thể InvocationLocal 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 một lệnh gọi.

Mỗi lệnh gọi được liên kết với một bản sao của biến trong phạm vi lệnh gọi, miễn là lệnh gọi đang diễn ra và bạn có thể truy cập vào thực thể InvocationLocal. Sau khi một lệnh gọi hoàn tất, tất cả các bản sao của các thực thể cục bộ của lệnh gọi đều phải được thu thập rác (trừ khi có các tệp tham chiếu khác đến các 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 khi lệnh gọi vẫn đang diễn ra thì hệ thống sẽ không thu thập rác. Do đó, bạn không nên tạo các thực thể cục bộ hoặc không tĩnh vì các thực thể này có thể phát triển không giới hạn.

Cảnh báo: Hãy sử dụng lớp này một cách tiết kiệm 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 cạm bẫy 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 cục bộ lệnh gọi 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 cục bộ của lệnh gọi này.

Hàm khởi tạo công khai

InvocationLocal

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 cục bộ lệnh gọi này. Nếu biến không có giá trị cho lệnh gọi hiện tại, thì trước tiên, biến này sẽ được khởi tạo thành giá trị được trả về bằng lệnh gọi đến phương thức initialValue().

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 cục bộ của lệnh gọi này. Phương thức này sẽ được gọi trong lần đầu tiên mã thực thi trong ngữ 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 được đảm bảo sẽ được gọi tối đa một lần cho mỗi lệnh gọi.

Phương thức triển khai này chỉ trả về null nhưng có thể được thay đổi bằng cách phân lớp 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