Instanciando InnerClass de InnerClass ?[resolvido]

2 respostas
blackstile

Galera estou com uma duvida;
Eseta aqui no forum pesquisando sobre inner class e acessei o seguinte exercício aqui no forum

http://www.guj.com.br/posts/list/219034.java

Fiz umas adaptações e o exercicio ficou assim:

interface Declaravel{  
    void declarar();  
}  
class Imposto implements Declaravel{  
    public void declarar(){}  
      
    class NotaFiscal implements Declaravel{  
        public void declarar(){}  
        class Pagamento implements Declaravel{  
            public void declarar(){}  
        }  
    }  
}  
public class Teste {  
    public static void main(String[] args) {  
        Declaravel [] d = new Declaravel[3];  
        d[0] = new Imposto();  
        d[1] = new Imposto().new NotaFiscal(); 
	//d[2] =  new Imposto().new NotaFiscal().new Pagamento(); // aqui da erro

	Imposto ip = new Imposto();
	Imposto.NotaFiscal nf = ip.new NotaFiscal();
        d[2] = nf.new Pagamento();//aqui funciona
	
    }  
      
  
}

Queria saber porque assim não funciona ?

E usando assim funciona ?

Imposto ip = new Imposto();
Imposto.NotaFiscal nf = ip.new NotaFiscal();
d[2] = nf.new Pagamento();//aqui funciona

A pergunta é, como chamar uma inner class de uma inner class em uma unica linha, sem que seja necessário criar uma variavel antes.

2 Respostas

romarcio

Tenta assim:

Imposto.NotaFiscal.Pagamento pag = new Imposto().new NotaFiscal().new Pagamento();

A propósito, fiz esse teste d[2] = new Imposto().new NotaFiscal().new Pagamento(); e não tive nenhum erro, funcionou.

blackstile

Galera o problema era que eu estava usando o notepad com prompt do dos para compilar com javac.
Quando eu joguei no eclipse o comando funcionou sem nenhum problema

Não sei porque mas Blz
Valew Galera !!!

Criado 1 de novembro de 2010
Ultima resposta 1 de nov. de 2010
Respostas 2
Participantes 2