كيف يمكنني الوصول إلى الفئة الفائقة من الاصجراء leTectionerner في جافا؟

StackOverflow https://stackoverflow.com/questions/1679308

  •  16-09-2019
  •  | 
  •  

سؤال

this.addTreeSelectionListener(new TreeSelectionListener() {

        public void valueChanged(TreeSelectionEvent e) {

            // How do I access the parent tree from here?           
        }           
    });
هل كانت مفيدة؟

المحلول

TreeSelectionListener هي واجهة، لذلك سيكون الفصل الوالد الوحيد Object, ، والتي يجب أن تكون قادرا على الاتصال بها super.

إذا كنت تعني استدعاء بعض الأسلوب من الفئة المرفوعة، فيمكنك الاتصال به بشكل مباشر كما في غضون طريقة.

نصائح أخرى

يمكنك استخدام OuterClass.this:

public class Test {

    String name; // Would normally be private of course!

    public static void main(String[] args) throws Exception {
        Test t = new Test();
        t.name = "Jon";
        t.foo();
    }

    public void foo() {
        Runnable r = new Runnable() {
            public void run() {
                Test t = Test.this;
                System.out.println(t.name);
            }
        };
        r.run();
    }
}

ومع ذلك، إذا كنت بحاجة فقط إلى الوصول إلى عضو في الحالة المرفوعة، بدلا من الحصول على مرجع إلى المثيل نفسه، يمكنك فقط الوصول إليه مباشرة:

Runnable r = new Runnable() {
    public void run() {
        System.out.println(name); // Access Test.this.name
    }
};
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top