I learned about inner classes from Cay Horstmann's Core
Java. He showed me how to disassemble a class file and what it means.
When I want to understand things about inner classes, and the JLS and The Java Programming Language just say the rules but not why, I almost always have to disassemble the class file.
javap -private Outer.class
javap -private Outer$Inner.class
javap -private Outer$1.class
You can see the extra fields the compiler adds. One object might have a reference to the other one. Or the local variables of one object might be copied to the other object. Or the constructor might have extra params. Think about two objects separated physically in space. It begins to make sense.
[ December 05, 2003: Message edited by: Marlene Miller ]