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?
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();
}