You can’t access to the members of an outer class from an inner class using the keyword “this”.
In fact, the keyword “this” in an inner class is a reference to the inner class itself.
To have a reference to the outer class, you must use the syntax:
[OuterClassName].this
where [OuterClassName] is the name of the outer class.
See the following code as example:
public class OuterClass { String myString = new String("outer class"); void outerMethod() { // print the outer class string from the outer class System.out.println(this.myString); InnerClass innerClass = new InnerClass(); innerClass.innerMethod(); } class InnerClass { String myString = new String("inner class"); void innerMethod() { // print the inner class string from the inner class System.out.println(this.myString); // print the outer class string from the inner class System.out.println(OuterClass.this.myString); } } }
Obviously you can’t use “this” from a static code, and this applies as a general rule.
Leave a Reply