Java inner classes are associated with an instance of the enclosing class which is unnecessary when inner class does not refer directly to instance variables or methods defined in enclosing class.