protected void finalize() throws Throwable {}
blockquote>
- каждый класс наследует метод
finalize()
из java.lang.Object- , метод вызывается сборщиком мусора, когда он не определяет больше ссылок на объект exist
- Метод finalize объекта не выполняет никаких действий, но может быть переопределен любым классом
- , как правило, он должен быть переопределен для очистки ресурсов, отличных от Java, т.е. закрытие файла
- , если переопределить
finalize()
, хорошая практика программирования - использовать инструкцию try-catch-finally и всегда вызыватьsuper.finalize()
. Это мера безопасности, обеспечивающая непреднамеренное пропущение закрытия ресурса, используемого объектами, вызывающими классprotected void finalize() throws Throwable { try { close(); // close open files } finally { super.finalize(); } }
- . Любое исключение, созданное
finalize()
во время сбора мусора, останавливает завершение, но в противном случае игнорируетсяfinalize()
никогда не запускается более одного раза на любом объекте, указанном по адресу: http://www.janeg.ca/scjp/ gc / finalize.html
Вы также можете проверить эту статью:
Проверка доступности описана в этом предыдущий StackOverflow Quesiton
begin
gem "somegem"
# with requirements
gem "somegem", ">=2.0"
rescue Gem::LoadError
# not installed
end
или
matches = Gem.source_index.find_name(gem.name, gem.version_requirements)
Что касается установки, похоже, что rails использует систему для установки gem также
puts %x(#{cmd})
Это - мой способ сделать это
['json','date','mail'].each { |req|
begin
gem req
rescue Gem::LoadError
puts " -> install gem " + req
Gem.install(req)
gem req
end
require req
}