InvocationLocal
public class InvocationLocal
extends Object
java.lang.object | |
↳ | com.android.tradefed.invoker.logger.InvocationLocal<T> |
این کلاس متغیرهای invocation-scope را ارائه می دهد.
مکانیزم مشابه ThreadLocal
عمل می کند. این متغیرها با همتاهای معمولی خود در آن کد متفاوت هستند، در یک فراخوانی که به یکی (از طریق متد get
آن) دسترسی پیدا میکند، یک نسخه اولیه مستقل از متغیر خود را دارد. InvocationLocal
نمونههای معمولاً فیلدهای استاتیک خصوصی در کلاسهایی هستند که میخواهند حالت را با فراخوانی مرتبط کنند.
تا زمانی که فراخوانی در حال انجام است و نمونه InvocationLocal
قابل دسترسی است، هر فراخوانی با یک کپی از یک متغیر با محدوده فراخوانی همراه است. پس از تکمیل فراخوانی، همه کپیهای آن از نمونههای فراخوانی محلی در معرض جمعآوری زباله قرار میگیرند (مگر اینکه ارجاعات دیگری به این نسخهها وجود داشته باشد).
توجه داشته باشید که بر خلاف ThreadLocal
نمونههایی که در زمانی که فراخوان هنوز در حال انجام است دیگر ارجاع داده نمیشوند، زباله جمعآوری نمیشوند. بنابراین ایجاد نمونه های محلی یا غیر استاتیک توصیه نمی شود زیرا می توانند بدون محدودیت رشد کنند.
اخطار: از این کلاس به اندازه کافی استفاده کنید، زیرا invocation-locals متغیرهای سراسری تجلیل شده با بسیاری از مشکلات مشابه هستند.
خلاصه
سازندگان عمومی | |
---|---|
InvocationLocal () |
روش های عمومی | |
---|---|
final T | get () کپی فراخوانی در حال اجرا را از این متغیر فراخوانی-محلی برمیگرداند. |
روش های محافظت شده | |
---|---|
T | initialValue () "مقدار اولیه" فراخوان فعلی را برای این متغیر فراخوانی-محلی برمیگرداند. |
سازندگان عمومی
InvocationLocal
public InvocationLocal ()
روش های عمومی
دریافت کنید
public final T get ()
کپی فراخوانی در حال اجرا را از این متغیر فراخوانی-محلی برمیگرداند. اگر متغیر هیچ مقداری برای فراخوانی فعلی نداشته باشد، ابتدا به مقدار بازگردانده شده توسط فراخوانی initialValue()
مقدار دهی اولیه می شود.
برمی گرداند | |
---|---|
T | کپی فراخوانی در حال اجرای فعلی از این فراخوان-محلی. |
روش های محافظت شده
مقدار اولیه
protected T initialValue ()
"مقدار اولیه" فراخوان فعلی را برای این متغیر فراخوانی-محلی برمیگرداند. این متد اولین باری که کد اجرا میشود در زمینه فراخوانی که با متد get()
به متغیر دسترسی پیدا میکند، فراخوانی میشود. این روش تضمین شده است که حداکثر یک بار در هر فراخوانی فراخوانی می شود.
این پیاده سازی به سادگی null
را برمی گرداند اما می توان با زیر کلاس InvocationLocal
و نادیده گرفتن این متد تغییر داد.
برمی گرداند | |
---|---|
T | مقدار اولیه برای این متغیر فراخوانی |