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 ค่าเริ่มต้นสำหรับตัวแปรขอบเขตการเรียกใช้นี้