Inner class

Uma inner class é realmente necessária? Que tipo de aplicação se deve usar uma inner class em Java?

Ainda não conheci um problema que exija o uso de innerclasses, porém, já vi várias situações onde o uso delas torna as coisas mais fáceis e organizadas.
Por exemplo,

Se quiseres organizar atributos de uma classe dentro dela mesma, ao invés de criar as classes espalhadas.

Ou então se quiseres criar event handlers, e por aí vai.

Espero que tenha expandido teus horizontes.

[]s

Um exemplo classico de utilização de inner classes ta nas classes que implementam a interface Collection do java.
Elas usam como inner classes os seus iteradores (q implementam Iterator).

public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>{
     private class Itr implements Iterator<E> {
          ...
      }
      
       public Iterator<E> iterator() {
	    return new Itr();
       }
}

Acho que inner classes sao muito uteis nesse tipo de utilização.