I am lacking understanding of the following: if I create an instance of an inner class using "shorthand," is it a bad idea to access the outer class even though I created no explicit instance of it?

For example, consider the following code:

```
class OuterClass
{
    int i;

    OuterClass() { i = 2; }

    class InnerClass
    {
        int get_parent_i() { return (OuterClass.this.i); }
    }
}

```

The following compiles and returns the expected result (2):

```
OuterClass.InnerClass ic = new OuterClass().new InnerClass();

System.out.println(ic.get_parent_i());

```

My confusion stems from the fact that I didn't explicitly create an OuterClass object in order to instantiate an InnerClass object, although one seems to exist regardless. Can someone tell me what is going on, and if I should for any reason either access or forget about the phantom instance?

Thank you so much!