Как правильно очистить в Java, если у меня есть дополнительные ссылки на объекты в другом объекте.Допустим, у меня есть следующий пример:
Континент | ________ Страна | ______ Город
Поэтому у континента может быть несколько стран, которые, в свою очередь, могут иметь несколько городов.
public class City {
public String name;
public City(String name) {
this.name = name;
}
}
public class Country {
public String name;
public ArrayList<City> cities = new ArrayList<City>();
public Country(String name) {
this.name = name;
}
}
public class Continent {
public String name;
public ArrayList<Country> countries = new ArrayList<Country>();
public Country(String name) {
this.name = name;
}
}
public static void main(String[] args) {
City city1 = new City("Berlin");
City city2 = new City("Paris");
City city3 = new City("Munich");
Country country1 = new Country("Germany");
Country country2 = new Country("France");
country1.cities.add(city1);
country1.cities.add(city3);
country2.cities.add(city2);
Continent continent1 = new Continent("Europe");
continent1.countries.add(country1);
continent1.countries.add(country2);
}
КакВы можете видеть, что у меня есть объект Continent, который имеет несколько стран в ArrayList, который может иметь несколько городов в каждой.Теперь мой вопрос:
Насколько я знаю, сборщик мусора не касается объектов, на которые есть ссылки, поэтому мне нужно обязательно удалить все ссылки.Итак, когда я прав, тогда
continent1.countries.clear();
недостаточно.В этом случае достаточно ли очистки «стран» ArrayList на континенте объекта и всех «городов» ArrayList в каждой стране объекта?Или я что-то упускаю или, может быть, я совершенно не прав?