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