Le inner class (non static) hanno la peculiarità di avere una "relazione" particolare con la classe contenitore. Una istanza della inner class è associata ad una istanza della classe contenitore. Questo fornisce alla inner class dei privilegi, che consistono nel fatto che può usare tutti i membri di istanza, anche private della classe contenitore perché sono in effetti "in scope".Originariamente inviato da Poker1
ora resta da capire quando conviene usare una e quando l'altra!
Quindi una inner class la si usa quando si deve sfruttare questa relazione particolare ed usare la istanza della classe contenitore o i suoi membri di istanza.
Le nested class (static) sono normali classi che sono inglobate in un'altra, come se fosse un "namespace". Non c'è alcuna "relazione" particolare. Invece di avere solo Pippo la classe si chiama Contenitore.Pippo. Alla fine è solo una questione "strutturale".
P.S. esistono dei casi in cui una inner class non ha associata una classe contenitore ... pur restando comunque "inner".