การร้องขอท้องถิ่น

public class InvocationLocal
extends Object

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


คลาสนี้จัดให้มีตัวแปรขอบเขตการร้องขอ

กลไกนี้ทำงานคล้ายกับ ThreadLocal ตัวแปรเหล่านี้แตกต่างจากตัวแปรปกติในโค้ดนั้นในการเรียกใช้ที่เข้าถึงตัวแปรตัวใดตัวหนึ่ง (ผ่านวิธี get ) มีสำเนาของตัวแปรที่เริ่มต้นโดยอิสระเป็นของตัวเอง โดยทั่วไปอินสแตนซ์ InvocationLocal จะเป็นฟิลด์คงที่ส่วนตัวในคลาสที่ต้องการเชื่อมโยงสถานะกับการเรียกใช้

การเรียกใช้แต่ละรายการจะเชื่อมโยงกับสำเนาของตัวแปรในขอบเขตการเรียกใช้ ตราบใดที่การเรียกใช้ยังดำเนินการอยู่และสามารถเข้าถึงอินสแตนซ์ InvocationLocal ได้ หลังจากการร้องขอเสร็จสมบูรณ์ สำเนาของอินสแตนซ์การร้องขอภายในเครื่องทั้งหมดจะถูกรวบรวมขยะ (เว้นแต่จะมีการอ้างอิงอื่นถึงสำเนาเหล่านี้)

โปรดทราบว่าไม่เหมือนกับอินสแตนซ์ ThreadLocal ที่ไม่มีการอ้างอิงอีกต่อไปในขณะที่การเรียกใช้ยังคงดำเนินการอยู่ จะไม่ถูกรวบรวมแบบขยะ ดังนั้นจึงไม่แนะนำให้สร้างอินสแตนซ์ภายในเครื่องหรือแบบไม่คงที่ เนื่องจากอินสแตนซ์สามารถขยายได้โดยไม่มีขอบเขต

คำเตือน: ใช้คลาสนี้เท่าที่จำเป็นเนื่องจากการร้องขอในท้องถิ่นได้รับการยกย่องให้เป็นตัวแปรระดับโลกที่มีข้อผิดพลาดเดียวกันหลายประการ

สรุป

ผู้รับเหมาก่อสร้างสาธารณะ

InvocationLocal ()

วิธีการสาธารณะ

final T get ()

ส่งคืนสำเนาของการร้องขอที่กำลังดำเนินการอยู่ของตัวแปรท้องถิ่นการร้องขอนี้

วิธีการที่ได้รับการป้องกัน

T initialValue ()

ส่งกลับ "ค่าเริ่มต้น" ของการเรียกใช้ปัจจุบันสำหรับตัวแปรภายในการเรียกใช้นี้

ผู้รับเหมาก่อสร้างสาธารณะ

การร้องขอท้องถิ่น

public InvocationLocal ()

วิธีการสาธารณะ

รับ

public final T get ()

ส่งคืนสำเนาของการร้องขอที่กำลังดำเนินการอยู่ของตัวแปรท้องถิ่นการร้องขอนี้ หากตัวแปรไม่มีค่าสำหรับการเรียกใช้ปัจจุบัน อันดับแรกตัวแปรจะถูกเตรียมใช้งานเป็นค่าที่ส่งคืนโดยการเรียกเมธอด initialValue()

การส่งคืน
T สำเนาของการร้องขอที่ดำเนินการอยู่ในปัจจุบันของการร้องขอ-local นี้

วิธีการที่ได้รับการป้องกัน

ค่าเริ่มต้น

protected T initialValue ()

ส่งกลับ "ค่าเริ่มต้น" ของการเรียกใช้ปัจจุบันสำหรับตัวแปรภายในการเรียกใช้นี้ วิธีการนี้จะถูกเรียกใช้ในครั้งแรกที่เรียกใช้โค้ดในบริบทของการเรียกใช้เพื่อเข้าถึงตัวแปรด้วยวิธี get() รับประกันว่าจะมีการเรียกใช้วิธีนี้ได้มากที่สุดหนึ่งครั้งต่อการร้องขอ

การใช้งานนี้ส่งคืนค่า null แต่สามารถเปลี่ยนแปลงได้โดยคลาสย่อย InvocationLocal และแทนที่วิธีนี้

การส่งคืน
T ค่าเริ่มต้นสำหรับตัวแปรขอบเขตการเรียกใช้นี้