Interface Static?

6 respostas
blackstile

Galera alguém saberia explicar esse código?
Estava fazendo um simulado e achei que não compilasse, mas na verdade ele compila, como não vi nenhuma sintaxe assim antes respondi que não compilava.
Gostaria de saber, porque é possivel criar uma interface static dentro da classe e depois criar uma classe static dentro desta interface static :?: :?: :?:?

class C1
{
static interface I
{
  static class C2
  {
   }

}
public static void main(String a[])
{
C1.I.C2 ob1=new C1.I.C2();
System.out.println("object created");
}
}

6 Respostas

ViniGodoy

Isso é uma inner class estática. Ou seja, uma interface que existe dentro de uma classe. No Java isso é plenamente permitido.

http://download.oracle.com/javase/tutorial/java/javaOO/innerclasses.html
http://download.oracle.com/javase/tutorial/java/javaOO/nested.html

diegohsi

VinniGodoy por que ela tem que ser static? Não entrei nesse conteúdo ainda

Felagund

ela é estatica para ser acessada sem instancia a classe que a contem.

Eu uso innerclass para alguns casos de expressividade, como por exemplo em um calendario temos um objeto Feriado, ao invez de deixar o Feriado perdido eu instancio ele como

Calendario.Feriado feriado = new Calendario.Feriado();

isso são duas classes não interfaces.

ViniGodoy

Outra situação é para classes privadas. Que só fazem sentido associadas a outras classes.

public class ListaEncadeada { private static class No { public No proximo; public int valor; } }

blackstile

Galera eu ja havia visto todos os tipos de InnerClass, mas nunca havia visto uma declaração de Static Interface.
Por isso a questão da duvida, e o pior ainda, é que a interface tem uma innerclass também.

ViniGodoy

blackstile:
Galera eu ja havia visto todos os tipos de InnerClass, mas nunca havia visto uma declaração de Static Interface.
Por isso a questão da duvida, e o pior ainda, é que a interface tem uma innerclass também.

Sim, não é pq um recurso é possível, que ele será muito utilizado. Provavelmente incluíram static interfaces para ficar simétrico em relação as classes.

Criado 27 de outubro de 2010
Ultima resposta 29 de out. de 2010
Respostas 6
Participantes 4