ใช่ เราสามารถเข้าถึง ตัวแปรสุดท้ายในเครื่อง โดยใช้ เมธอด local inner class เพราะตัวแปรสุดท้ายจะถูกเก็บไว้ใน ฮีป และดำรงอยู่ตราบเท่าวิธีการชั้นในของท้องถิ่น วัตถุอาจมีชีวิต
วิธีการระดับชั้นในภายใน
- A อินสแตนซ์คลาสภายในภายในเครื่อง สามารถส่งเป็นอาร์กิวเมนต์และดึงข้อมูลจากเมธอดและสามารถใช้ได้ภายในขอบเขตที่ถูกต้อง
- ข้อจำกัดเดียวใน method local inner class คือพารามิเตอร์ท้องถิ่นสามารถดำเนินการได้ก็ต่อเมื่อถูกกำหนดเป็น สุดท้าย .
- เมธอดที่เรียกใช้พารามิเตอร์ในเครื่องสามารถเรียกได้หลังการดำเนินการของเมธอด ซึ่ง คลาสภายในภายในเครื่อง ถูกประกาศ ด้วยเหตุนี้ พารามิเตอร์ในเครื่องจะไม่เก็บค่าไว้อีกต่อไป
- ค่าจะต้องได้รับการแก้ไขก่อนที่จะสร้างอ็อบเจ็กต์คลาสภายในภายในเครื่อง หากจำเป็น ตัวแปรที่ไม่ใช่ตัวแปรสุดท้ายสามารถคัดลอกไปยังตัวแปรสุดท้ายได้ ซึ่งจะถูกดำเนินการในภายหลังโดย คลาสภายในภายในเครื่อง .
ตัวอย่าง
class MainClassTest {
private int x = 10;
public void sampleMethod() {
final int y = 20;
class MethodLocalInnerClassTest {
public void accessMainClassVar() {
System.out.println(x);
// accessing the final variable
System.out.println(c);
}
}
MainClassTest mainTest = new MethodLocalInnerClassTest();
mainTest.accessMainClassVar();
}
}
// Test.java
public class Test {
public static void main(String args[]) {
MainClassTest test = new MainClassTest();
test.sampleMethod();
}
} ผลลัพธ์
10 20