Подтвердить что ты не робот

Доступ к внешнему классу "супер" из внутреннего класса в Java

Как я могу получить доступ к внешнему классу 'super из внутреннего класса?

Я переопределяю метод, чтобы он запускался в другом потоке. Из встроенного потока мне нужно вызвать оригинальный метод, но, конечно, просто вызов method() превратится в бесконечную рекурсию.

В частности, я расширяю BufferedReader:

public WaitingBufferedReader(InputStreamReader in, long waitingTime)
{
    [..]
    @Override
    public String readLine()
    {
        Thread t= new Thread(){
            public void run()
            {
                try { setMessage(WaitingBufferedReader.super.readLine()); } catch (IOException ex) { }
            }
         };

          t.start();
          [..]
    }
}

Это где-то дает мне исключение NullPointerException, которое я не могу найти.

Спасибо.

4b9b3361

Ответ 1

Вот так:

class Outer {
    class Inner {
        void myMethod() {
            // This will print "Blah", from the Outer class' toString() method
            System.out.println(Outer.this.toString());

            // This will call Object.toString() on the Outer class' instance
            // That probably what you need
            System.out.println(Outer.super.toString());
        }
    }

    @Override
    public String toString() {
        return "Blah";
    }

    public static void main(String[] args) {
        new Outer().new Inner().myMethod();
    }
}

В приведенном выше тесте при выполнении отображается:

Blah
[email protected]