vou fala o pouco que eu sei sobre isso, ae alguem mais experiente pode dar uma explicação melhor…
a inner class vc define assim mais ou menos
public class Teste {
public static void main(String args[]) {
}
class Teste2 {
}
}
verifica que a class Teste é chamada a Classe TOP, e a classe Teste2 esta dentro da classe Teste, então a classe Teste2 é minha inner classe
a Vantagem dela é que a classe Teste2 pode acessar tudo da classe Teste, inclusive métodos e atributos private, coisa que em classes normais não podem acessar…
Um exemplo bem tipico de classe anonyma é quando vc usa com listener, por exemplo, ActionListener, exemplo
botao.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
.....
}
}
verifica que nao está sendo criado nenhum objeto para a classe ActionListener, então ela é uma classe anonyma… a vantagem eu nao sei exatamente, mas isso é usado basicamente para reduzir linhas de códigos, pois nao precisa instanciar uma classe para um objeto e etc…
espero ter ajudado