Olá pessoal,
Estava sendo curioso e analisando as classes EmpresaDAO e UsuarioDAO e fiquei na dúvida do trecho de código abaixo:
//Trecho da classe EmpresaDAO
static {
geraIdEAdiciona(new Empresa("Doceria Bela Vista"));
geraIdEAdiciona(new Empresa("Ferragens Docel"));
geraIdEAdiciona(new Empresa("Alura"));
geraIdEAdiciona(new Empresa("Google"));
geraIdEAdiciona(new Empresa("Caelum"));
geraIdEAdiciona(new Empresa("Casa do Código"));
}
//Trecho da classe UsuarioDAO
static {
USUARIOS.put("guilherme.silveira@alura.com.br", new Usuario("guilherme.silveira@alura.com.br","silveira"));
USUARIOS.put("rodrigo.turini@alura.com.br", new Usuario("rodrigo.turini@alura.com.br","turini"));
}
O que seria esse trecho de código? Uma variável? Um construtor? Quando ele é chamado? Existe alguma documentação para que eu possa entender melhor como isso funciona?
Abaixo as classes citadas na minha dúvida:
public class EmpresaDAO {
private final static Map<Long, Empresa> EMPRESAS = new HashMap<>();
static {
geraIdEAdiciona(new Empresa("Doceria Bela Vista"));
geraIdEAdiciona(new Empresa("Ferragens Docel"));
geraIdEAdiciona(new Empresa("Alura"));
geraIdEAdiciona(new Empresa("Google"));
geraIdEAdiciona(new Empresa("Caelum"));
geraIdEAdiciona(new Empresa("Casa do Código"));
}
public Collection<Empresa> buscaPorSimilaridade(String nome) {
if (nome == null)
return EMPRESAS.values();
List<Empresa> similares = new ArrayList<>();
for (Empresa empresa : EMPRESAS.values()) {
if (empresa.getNome().toLowerCase().contains(nome.toLowerCase()))
similares.add(empresa);
}
return similares;
}
public void adiciona(Empresa empresa) {
geraIdEAdiciona(empresa);
}
private static void geraIdEAdiciona(Empresa empresa) {
long id = EMPRESAS.size()+1l;
empresa.setId(id);
EMPRESAS.put(id, empresa);
}
}
public class UsuarioDAO {
private final static Map<String, Usuario> USUARIOS = new HashMap<>();
static {
USUARIOS.put("guilherme.silveira@alura.com.br", new Usuario("guilherme.silveira@alura.com.br","silveira"));
USUARIOS.put("rodrigo.turini@alura.com.br", new Usuario("rodrigo.turini@alura.com.br","turini"));
}
public Usuario buscaPorEmailESenha(String email, String senha) {
if (!USUARIOS.containsKey(email))
return null;
Usuario usuario = USUARIOS.get(email);
if (usuario.getSenha().equals(senha))
return usuario;
return null;
}
}