Interface estática?

4 respostas
developer.schneider

Bom dia!
Sou iniciante em java, e achei uma interface estática no código que estou analisando… não consegui entender o porquê disso.

static interface Senha extends StdCallLibrary {
		void criptografaSenha(String value, String senhaCripto);
	}

Alguém saberia me explicar a moral de uma interface estática?
Agradeço desde já! obrigado.

4 Respostas

E
Ruttmann

Estava justamente estudando Interfaces pelo livro SCJP6 nessa manhã, e juro que nunca vi isso…

No link uma resposta explica que interfaces aninhadas já são implicitamente static e que esse modificador pode ser retirado sem problemas…

Mas aí vem a pergunta, pra que usar uma interface que só pode ser implementada por classes que tenham acesso à classe que contém essa interface?

Ao meu ver só quebra as facilidades de encapsulamento que as interfaces proporcionam…

Vamos aguardar se alguém com mais conhecimento possa explicar esse código…

:roll:

wagnerfrancisco

Ruttmann:
Estava justamente estudando Interfaces pelo livro SCJP6 nessa manhã, e juro que nunca vi isso…

No link uma resposta explica que interfaces aninhadas já são implicitamente static e que esse modificador pode ser retirado sem problemas…

Mas aí vem a pergunta, pra que usar uma interface que só pode ser implementada por classes que tenham acesso à classe que contém essa interface?

Ao meu ver só quebra as facilidades de encapsulamento que as interfaces proporcionam…

Vamos aguardar se alguém com mais conhecimento possa explicar esse código…

:roll:

No caso de interfaces públicas dentro de outras classes ou interfaces, me parece que é mais uma questão de organização. A interface Entry está definida dentro da interface Map (java.util). Poderia ser fora, mas da maneira que foi definido, fica bem claro o propósito desta interface. Veja:

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Map.java

Uma interface Entry perdida no pacote java.util diz pouco, mas uma interface Entry definida dentro da interface Map, deixa bem claro o seu propósito.

Ainda tem interfaces privadas dentro de classes. Nesse caso creio que a interface só faça sentido dentro de um determinado contexto (classe). Ela é definida dentro da classe para garantir que nenhum usuário tente implementá-la e cause problemas para manter compatibilidade em futuras versões.

developer.schneider

Obrigado pelas repostas!

Criado 8 de outubro de 2012
Ultima resposta 10 de out. de 2012
Respostas 4
Participantes 4