Search code examples
javanested-classscoping

Is it possible to explicitly access instance members of a nested class's containing class?


Is there a keyword in java to allow explicit invocation of members of the containing instance (or of its superclass) from within a nested class?

SCENARIO

public class Superclass {
    public void doSomething() {
        // do something that's of interest to the superclass
    }
}

public class Subclass extends Superclass {
    @Override
    public void doSomething() {
        // do something that's of interest to the subclass
        // possibly call super.doSomething()
    }

    private class NestedClass {
        private void doSomething() {
            // do something that's of interest to the nested class
            // calling doSomething() here without an explicit scope
            // specifier results in a stack overflow
        }

        private void doSomethingElse() {
            if (somethingOfInterestToTheSubclassIsNotImportant) {
                // just invoke the superclass's doSomething() method
            } else {
                // invoke the subclass's doSomething() method
            }
        }
    }
}

Solution

  • Oh, totally. Just use Subclass.this.doSomething(), or Subclass.super.doSomething() to get the superclass method.