No projeto, no modelo Banco, temos o seguinte trecho:
private static List<Empresa> empresas = new ArrayList<>();
private static List<Usuario> listaUsuarios = new ArrayList<>();
private static Integer chaveSequencial = 1;
static {
Empresa empresa = new Empresa();
empresa.setId(Banco.chaveSequencial++);
empresa.setNome("Alura");
Empresa empresa2 = new Empresa();
empresa2.setId(Banco.chaveSequencial++);
empresa2.setNome("Caelum");
empresas.add(empresa);
empresas.add(empresa2);
Usuario u1 = new Usuario();
u1.setLogin("luci");
u1.setSenha("12345");
Usuario u2 = new Usuario();
u2.setLogin("luci");
u2.setSenha("12345");
listaUsuarios.add(u1);
listaUsuarios.add(u2);
}
Podem, reforçar, o por quê do static
private static List<Usuario> listaUsuarios = new ArrayList<>();
Ao invés de
private List<Usuario> listaUsuarios = new ArrayList<>();
?
O que há por trás? O que a JVM entende quando fazemos isso? Usando como static?
O uso do static { variáveis iniciadas aqui dentro } compila? Eu digo pra jvm que quando rodar eu quero que já inicie com esses objetos instanciados, certo?
Obrigada!