Method-local inner class

Which are true about a method-local inner class? (Choose all that apply.)

A. It must be marked final
B. It can be marked abstract
C. It can be marked public
D. It can be marked static
E. It can access private members of the enclosing class

As alternativas B e E estão corretas. Porém, por que as alternativas C e D também não estão? Eu compilei o seguinte programa, e funcionou normalmente:

[code]public class TesteFile
{
private String x;

static class InnerClass{
	public String s;
	public static void metodo(){ }
}

static final public void main(String[]sss){
}

}[/code]

Veja que o método “metodo()” é public e static. Isso não tornaria as alternativas C e D corretas também?

mas o exercicio está se referindo apenas a classes definidas dentro de métodos…

Quer dizer que “Method-local inner class” significa uma classe interna definida dentro de um método? Eu achei que fosse o contrário… Como ficaria então, em inglês, um método dentro de uma classe interna?

Outra dúvida, no seguinte código:

public class TesteFile
{
	static final public void main(String[]sss){

		TesteFile tf = new TesteFile(){

			public void metodo2(){}
		};

		tf.metodo2(); //Essa linha não compila, pois o tipo eh "TesteFile" e essa classe nao possui um método chamado metodo2(){}
	}
}

Existe alguma forma de chamar o método public “metodo2()” definido dentro da classe anônima acima? Claro, sem considerar algo deste tipo:

[code]public class TesteFile
{
protected void metodo2(){ System.out.println(“Out”); }

static final public void main(String[]sss){

	TesteFile tf = new TesteFile(){

		public void metodo2(){System.out.println("In");}
	};

	tf.metodo2();
}

}
[/code]

isso msm…

não entendi direito oque vc quer…

Nâo, a unica maneira é vc ter a assinatura do metodo na classe no qual vc criou um anonimo.