InvocationLocal
public
class
InvocationLocal
extends Object
java.lang.Object | |
↳ | com.android.tradefed.invoker.logger.InvocationLocal<T> |
คลาสนี้มีตัวแปรระดับการเรียกใช้
กลไกนี้ทำงานคล้ายกับ ThreadLocal
ตัวแปรเหล่านี้แตกต่างจากตัวแปรทั่วไปตรงที่โค้ดในการเรียกใช้ที่เข้าถึงตัวแปรหนึ่ง (ผ่านเมธอด get
) จะมีสำเนาของตัวแปรที่เริ่มต้นขึ้นเอง InvocationLocal
อินสแตนซ์มักเป็นฟิลด์คงที่ส่วนตัวในคลาสที่ต้องการเชื่อมโยงสถานะกับการเรียกใช้
การเรียกแต่ละครั้งจะเชื่อมโยงกับสําเนาของตัวแปรระดับการเรียกใช้ ตราบใดที่การเรียกใช้อยู่ระหว่างดำเนินการและเข้าถึงอินสแตนซ์ InvocationLocal
ได้ หลังจากการเรียกใช้เสร็จสมบูรณ์แล้ว สำเนาทั้งหมดของอินสแตนซ์ระดับการเรียกใช้จะขึ้นอยู่กับการเก็บรวบรวมขยะ (เว้นแต่จะมีข้อมูลอ้างอิงอื่นๆ ไปยังสำเนาเหล่านี้)
โปรดทราบว่าระบบจะไม่เก็บขยะอินสแตนซ์ ThreadLocal
ที่ไม่ได้อ้างอิงอีกต่อไปขณะที่การเรียกใช้ยังคงดำเนินอยู่ ซึ่งต่างจากอินสแตนซ์ ThreadLocal
เราไม่แนะนำให้สร้างอินสแตนซ์ในเครื่องหรืออินสแตนซ์ที่ไม่คงที่เนื่องจากอินสแตนซ์อาจเติบโตได้โดยไม่มีการเชื่อมโยง
คำเตือน: ใช้คลาสนี้อย่างประหยัดเนื่องจากตัวแปรภายในการเรียกใช้คือตัวแปรส่วนกลางที่ยกระดับแล้วซึ่งมีข้อผิดพลาดหลายประการเหมือนกัน
สรุป
ตัวสร้างแบบสาธารณะ | |
---|---|
InvocationLocal()
|
เมธอดสาธารณะ | |
---|---|
final
T
|
get()
แสดงสำเนาของตัวแปรระดับการเรียกใช้นี้ของการเรียกใช้ที่ดำเนินการอยู่ในปัจจุบัน |
วิธีการที่มีการป้องกัน | |
---|---|
T
|
initialValue()
แสดง "ค่าเริ่มต้น" ของการเรียกใช้ปัจจุบันสําหรับตัวแปรภายในการเรียกใช้นี้ |
ช่างก่อสร้างสาธารณะ
InvocationLocal
public InvocationLocal ()
เมธอดสาธารณะ
รับ
public final T get ()
แสดงสำเนาของตัวแปรระดับการเรียกใช้นี้ของการเรียกใช้ที่ดำเนินการอยู่ในปัจจุบัน หากตัวแปรไม่มีค่าสําหรับการเรียกใช้ปัจจุบัน ระบบจะเริ่มต้นตัวแปรเป็นค่าที่แสดงผลจากการเรียกใช้เมธอด initialValue()
ก่อน
คิกรีเทิร์น | |
---|---|
T |
สำเนาของ invocation-local ของการเรียกใช้ที่ดำเนินการอยู่ในปัจจุบัน |
วิธีการป้องกัน
initialValue
protected T initialValue ()
แสดง "ค่าเริ่มต้น" ของการเรียกใช้ปัจจุบันสําหรับตัวแปรภายในการเรียกใช้นี้ ระบบจะเรียกใช้เมธอดนี้เมื่อโค้ดที่ดำเนินการในบริบทของการเรียกใช้เข้าถึงตัวแปรด้วยเมธอด get()
เป็นครั้งแรก เราจะเรียกใช้เมธอดนี้ไม่เกิน 1 ครั้งต่อการเรียกใช้
การใช้งานนี้จะแสดงผลเป็น null
เท่านั้น แต่สามารถเปลี่ยนแปลงได้โดยการสร้างคลาสย่อยของ InvocationLocal
และลบล้างเมธอดนี้
คิกรีเทิร์น | |
---|---|
T |
ค่าเริ่มต้นของตัวแปรระดับการเรียกใช้นี้ |