C++ как управление ресурсами, возможное в Java [дубликат]

Это известная проблема со службой ...

Даже в этом случае из-за распределенного характера службы может потребоваться 15 минут, прежде чем файлы, сообщения и объекты событий станут доступны для использования этому пользователю через Microsoft Graph API.

blockquote>

https://docs.microsoft.com/en-us/graph/known-issues

5
задан ApproachingDarknessFish 27 December 2013 в 05:40
поделиться

4 ответа

Можно использовать обычное acquire; try { use; } finally { release; }. Кроме того, можно абстрагировать обработку ресурса с Выполнением Вокруг идиомы.

11
ответ дан 18 December 2019 в 08:31
поделиться

Joshua Bloch предложил добавить механизм под названием Автоматическое управление ресурсами к Java как часть Монеты Проекта (небольшие изменения языка для JDK 7):

4
ответ дан 18 December 2019 в 08:31
поделиться

Ближайшая альтернатива try/finally, см. http://java.sun.com/docs/books/tutorial/essential/exceptions/finally.html

3
ответ дан 18 December 2019 в 08:31
поделиться

Многим кодерам сила идиомы RAII состоит в том, что жизнь базового ресурса связывается с блоком объема, делая вещи более простыми сделать и поддержать; в конечном счете уменьшающие ошибки от отказа выпустить тот ресурс.

К сожалению, Вы не можете подражать этому поведению в Java, поскольку Вы не можете создать свои собственные ограниченные объемом структуры. Язык, подобный Java, который попытался решить эту проблему, является C#:

// explicit release
MyClass obj = MyClass();
obj.UseIt();
obj.Dispose();

// RAII-like (scope-bound) release
using(MyClass obj = new MyClass())
{
    obj.UseIt();
}

Возможно, мы будем видеть функциональность как реализованный в будущем.

1
ответ дан 18 December 2019 в 08:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: