Para responder à pergunta sobre limitar o escopo de uma variável, em vez de falar sobre o fechamento / descarte automático de variáveis.
Em Java, você pode definir escopos fechados e anônimos usando chaves. É extremamente simples.
{
AwesomeClass hooray = new AwesomeClass()
// Great code
}
A variável hooray
está disponível apenas neste escopo, e não fora dele.
Isso pode ser útil se você tiver variáveis repetidas que são apenas temporárias.
Por exemplo, cada um com índice. Assim como a item
variável é fechada no loop for (ou seja, só está disponível dentro dela), a index
variável é fechada no escopo anônimo.
// first loop
{
Integer index = -1;
for (Object item : things) {index += 1;
// ... item, index
}
}
// second loop
{
Integer index = -1;
for (Object item : stuff) {index += 1;
// ... item, index
}
}
Também uso isso às vezes se você não tiver um loop for para fornecer escopo de variável, mas quiser usar nomes de variáveis genéricos.
{
User user = new User();
user.setId(0);
user.setName("Andy Green");
user.setEmail("andygreen@gmail.com");
users.add(user);
}
{
User user = new User();
user.setId(1);
user.setName("Rachel Blue");
user.setEmail("rachelblue@gmail.com");
users.add(user);
}
using
faz. Escopo não é vitalício (eusing
também não é vitalício, estritamente falando, jáDispose
que não destrói a memória de um objeto.)