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