Olá amigos, esses dias estudando um pouco de design patterns vi esse trecho de código abaixo em um exemplo de Prototype.
A minha dúvida é sobre esse bloco de static sendo usado dessa forma, é algo que até então nos estudos de java não tinha visto ainda.
E confesso que fiquei meio perdido nesse sentido, quanto a escopo, funcionamento, motivação de uso.
Se alguém puder dar uma luz de entendimento ou algum link com explicação sobre, desde já eu agradeço!
Segue o link do código no meu github:
link do código no github
final class DocumentosRegistry2 {
private static final DocumentosRegistry2 INSTANCE = new DocumentosRegistry2();
private static final Map<String, Documento2> REGISTRY = new HashMap<>();
static {
Documento2 d1 = new Documento2();
d1.tipo = "PDF";
d1.visibilidade = "RESTRITO";
REGISTRY.put("PDF RESTRITO", d1);
Documento2 d2 = new Documento2();
d2.tipo = "PDF";
d2.visibilidade = "PUBLICO";
REGISTRY.put("PDF PUBLICO", d2);
Documento2 d3 = new Documento2();
d3.tipo = "DOC";
d3.visibilidade = "RESTRITO";
REGISTRY.put("DOC RESTRITO", d3);
Documento2 d4 = new Documento2();
d4.tipo = "DOC";
d4.visibilidade = "PUBLICO";
REGISTRY.put("DOC PUBLICO ", d4);
}
public static DocumentosRegistry2 getInstance() {
return INSTANCE;
}
public Documento2 getDocumento2(String chave) {
try {
return REGISTRY.get(chave).clone();
} catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
}
}