Aby odpowiedzieć na pytanie dotyczące ograniczania zakresu zmiennej, zamiast mówić o automatycznym zamykaniu / usuwaniu zmiennych.
W Javie można definiować zamknięte, anonimowe zakresy za pomocą nawiasów klamrowych. To niezwykle proste.
{
AwesomeClass hooray = new AwesomeClass()
// Great code
}
Zmienna hooray
jest dostępna tylko w tym zakresie, a nie poza nim.
Może to być przydatne, jeśli masz powtarzające się zmienne, które są tylko tymczasowe.
Na przykład każdy z index. Tak jak item
zmienna jest zamykana w pętli for (tj. Jest dostępna tylko w niej), tak index
zmienna jest zamykana w zakresie anonimowym.
// 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
}
}
Używam tego również czasami, jeśli nie masz pętli for, aby zapewnić zakres zmiennych, ale chcesz używać ogólnych nazw zmiennych.
{
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
robi. Zakres nie jest życiem (iusing
nie dotyczy też życia, ściśle mówiąc, ponieważDispose
nie niszczy pamięci obiektu.)