Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เมธอด local inner class สามารถเข้าถึงตัวแปรสุดท้ายในเครื่องใน Java ได้หรือไม่?


ใช่ เราสามารถเข้าถึง ตัวแปรสุดท้ายในเครื่อง โดยใช้ เมธอด 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