Olá Camilo!!
Vamos lá!! Primeiro para a questão do livro. Na versão desse livro em inglês a questão da seguinte forma:
Quais da alternativas abaixo sobre classe interna local de método é verdadeira?
A. Ela deve ser marcada final
B. Ela pode ser marcada abstract
C. Ela pode ser marcada public
D. Ela pode ser marcada static
E. Ela pode acessar membros private da classe encapsuladora
Uma classe interna local de método não deve ser final e sim, ela pode ser final e pode ser declarada como abstract. Esse tipo de classe não pode ser declarado nem como public e nem como static. E como qualquer inner class ela pode acessar os membros da classe encapsuladora. Logo as repostas são B e E.
As classes anônimas, quando usadas, são mais usadas na parte de eventos. Eventos são tratados a partir de classes que implementam certas interfaces que representam os ouvintes. Com classes anônimas vc poderá criar uma classe que implemente uma interface ou sobrescreva um ou mais métodos de uma classe qualquer, sem precisar declarar o nome da classe, e ao mesmo tempo criar uma instância dessa classe.
Por exemplo:
Temos uma interface:
interface Pessoa{
public static void quemSouEu();
}
Em alguma parte do código precisamos de um objeto do tipo Pessoa:
Pessoa pessoa = new Pessoa(){
public static void quemSouEu(){
System.out.println("Eu sou eu!!");
}
}
Quando vc faz algo desse tipo, é criado implícitamente uma classe que implemente a interface Pessoa, depois é criada uma referência dessa classe e atribuída a variável pessoa que é do tipo Pessoa. Esse é um exemplo do que se pode fazer com esse recurso. Você poderá ver esse recurso sendo mais utilizado na parte de tratamento de eventos, mas de maneira um pouco diferente. Por exemplo:
Existe um método com a seguinte assinatura:
public void setPessoa(Pessoa p){//blá blá blá!!}
Em alguma parte do código:
objeto.setPessoa( new Pessoa(){
public static void quemSouEu(){
System.out.println("Eu sou eu!!");
}
});
Aqui vc já tá fazendo a mesma coisa lá de cima, porém tá atribuindo a referência criada ao método.
Espero ter ajudado!!
Flw aew e t+!!