Inner classes II

dado o código a seguir, selecione todas as alternativas corretas:

a - erro de compilação na linha 4
b - erro de compilação na linha 10
c - compila, roda e lança runtime exception
d - compila, roda e imprime Inner Inner.metodo
e - compila, roda e não imprime nada
f - erro de compilação na linha 18

1 class Base {
2 	public void metodo() {
3 		class Inner {
4			Inner() {
5				System.out.print ("Inner ");
6			}
7			public void metodo() {
8 				System.out.print ("Inner.metodo ");
9			}
10			Inner i = new Inner();
11 		}
12 	}
13 }
14 
15 public class Teste12 {
16 	public static void main (String [] args) {
17 		Base b = new Base();
18 		b.metodo();
19 	}
20 }

e - compila, roda e não imprime nada

Se colocar Inner i = new Inner(); fora da Inner-class, ai imprime "Inner ".

correto!

[quote=“leonardom”]
Se colocar Inner i = new Inner(); fora da Inner-class, ai imprime "Inner [/quote]

como? por favor, dê um exemplo.

1 class Base { 
2     public void metodo() {
3         class Inner { 
4             Inner() { 
5                System.out.print ("Inner "); 
6             } 
7             public void metodo() { 
8                 System.out.print ("Inner.metodo "); 
9             } 
10       } 
11       [b] Inner i = new Inner(); <--- [/b]
12    } 
13 } 
14 
15 public class Teste12 { 
16    public static void main (String [] args) { 
17       Base b = new Base(); 
18       b.metodo(); 
19    } 
20 } 

beleza, lembrando que uma classe local à um método só pode ser instanciada dentro do próprio método

Verdade, isso é muito importante lembrar.

Valeu!!!