Как уничтожить объект правильно в Java?
У меня есть собственная мапа
public class MyMap implements <String,String>{
...
}
Она что-то делает в БД, а в конце нужно сделать 2 destroy метода:
Если объект был уничтожен сборщиком мусора без вызова метода
close(), то вызывался бы методclear()Если объект был уничтожен сборщиком после вызова
close(), то все данные сохраняются в БД.
То есть сделать аналог закрытия потока в FileWriter. Закрыл - сохранил, не закрыл - потерял.
Нужно ли использовать finalize() или просто добавить AutoCloseable ?
Ответы (1 шт):
Автор решения: Commander Tvis
→ Ссылка
Не используйте finalize(), потому что это устаревшая технология. Реализуйте AutoCloseable, а в целевом коде используйте класс только вместе с try-with-resources или внимательно проследите, чтобы был вызван метод close.
public class MyMap implements Map<String, String>, AutoCloseable {
...
void close() {
...
}
}
...
try(var map = new MyMap()) {
...
}