Внутренние классы с именами методов и сигнатурами, отличными от внешнего класса

Я знаю, как заставить этот код работать, но мне интересно, почему компилятор не может понять, что вызов относится к методу внешнего класса:

public class Example {
    public void doSomething(int a, int b)
    {
    }

    public class Request
    {
        public int a;
        public int b;

        public void doSomething()
        {
            doSomething(a,b); // Error. Fix: Example.this.doSomething(a,b);
        }
    }
}

Есть ли для этого более глубокая причина, чем защита кодеров от ошибок?

9
задан Thomas Andrews 29 September 2011 в 16:35
поделиться