سؤال

public class Test {
    public static void main(String[] args) {

    }
}

class Outer {
    void aMethod() {
        class MethodLocalInner {
            void bMethod() {
                System.out.println("Inside method-local bMethod");
            }
        }
    }
}

هل يمكن لأحد أن يقول لي كيفية طباعة الرسالة من bMethod?

هل كانت مفيدة؟

المحلول

يمكنك إنشاء مثيل فقط MethodLocalInner داخل aMethod.القيام بذلك

void aMethod() {

    class MethodLocalInner {

            void bMethod() {

                    System.out.println("Inside method-local bMethod");
            }
    }

    MethodLocalInner foo = new MethodLocalInner(); // Default Constructor
    foo.bMethod();

}

نصائح أخرى

ضمن الطريقة طريقة بعد اعلان الصف MethodLocalInner يمكنك على سبيل المثال إجراء المكالمة التالية:

new MethodLocalInner().bMethod();

لماذا لا تقوم فقط بإنشاء مثيل لـ MethodLocalInner, ، في aMethod, ، و اتصل bMethod على المثيل الجديد؟

قد يساعدك هذا على البدء (ليس لدي أي شيء مفيد للاختبار به).لاحظ بناء جملة المنشئ المعدل:

http://java.sun.com/docs/books/tutorial/java/javaOO/nested.html

أنت بحاجة إلى استدعاء Outer().aMethod() الجديد داخل طريقتك الرئيسية.تحتاج أيضًا إلى إضافة مرجع إلى MethodLocalInner().bMethod() داخل aMethod() الخاص بك، مثل هذا:

public class Test {
    public static void main(String[] args) {
        new Outer().aMethod();
    }
}


void aMethod() {
    class MethodLocalInner {
        void bMethod() {
            System.out.println("Inside method-local bMethod");
        }
    }
    new MethodLocalInner().bMethod();
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top