Вы пропустили вставить Double Quotes. Точный запрос -
db.theColl.find( { "_id": ObjectId("4ecbe7f9e8c1c9092c000027") } )
РЕДАКТИРОВАНИЕ: ответ ниже был записан в начале 2009, когда Java 7 был очень все еще в движении.
, В то время как Java все еще не обеспечивает гарантии вокруг синхронизации завершения, он сделал , получают функцию как C# using
оператор: оператор .
нет, Java не изменился вообще в этом отношении. Все еще необходимо использовать попытку/наконец.
было обсуждение добавления эквивалента оператора "использования" C# (который является синтаксическим сахаром по попытке/наконец) к Java, но я не думаю, что это будет частью Java 7 больше. (Большинство улучшений языка, кажется, было отброшено.)
стоит понять, что существуют причины, почему детерминированное разрушение не было реализовано в Java и.NET в форме считаемого на ссылку сборщика "мусора", между прочим - который a) влияет на производительность и b) перестало работать с циклическими ссылками. Brian Harry написал подробное электронное письмо об этом - это о.NET, и это довольно старо, но это определенно стоит близкого чтения.
Существует шаблон, который помогает здесь. Это не столь хорошо, как деструктор основывал RAII, но это действительно означает, что очистка ресурса может быть перемещена в библиотеку (таким образом, Вы не можете забыть называть его).
Это звонило , Выполняются Вокруг, и был обсужден здесь прежде .
Интересно я вижу Jon Skeet, в которого вмешиваются на том потоке, но он не упоминал это здесь - позор Вам, Jon - упустил возможность для некоторых точек представителя там!
BTW, в то время как я - довольный Brian Harry (см. комментарий Jon, снова) перешел к продолжительностям писания электронного письма, которое он сделал - и это, очевидно, отражало длительное размышление, которое вошло в процесс - и я рад, что мы действительно получали "использование" из него в C# - я не соглашаюсь со всеми его заключениями. В частности, я не вижу, почему, если у нас может быть использование, у нас не может быть способа отметить тип как поведение тот путь без "использования". Конечно, это ограничивает использование - но так делает "использование" - и большую часть времени это точно, что Вы хотите. Проблема "использовать" состоит в том, что клиентский код все еще должен не забыть использовать его. С RAII стиля C++ это - свойство типа. Возможно большая проблема с "использованием", или более точно с Расположить идиомой, состоит в том, что это намного более сложно и подвержено ошибкам, чем большинство людей понимает для разбираний - главным образом из-за потенциала для объектов, которые будут возвращены от мертвых.
Подход, который я проявляю, должен использовать многоуровневый продукт (когда-то простой статический метод), который заботится о распределении ресурсов. Вы не хотите этот вид распределения ресурсов, замусорившего Вашу программу.
существует много библиотек, которые делают это. Это не что-то Вам придется волноваться о в большинстве случаев.
Нет. Нет никакого средства для выделения Объектов на стеке. Каждый Объект выделяется на "куче" и может пережить любой блок, в котором это было инициализировано. Или это может быть собранная середина блока, в зависимости от капризов всего могущественного Сборщика "мусора".
, Если Вы работаете над сервером, Вы могли бы хотеть проверить Java EE. Это не имеет никакого отношения к RAII, но это действительно имеет достойную систему для управления жизненными циклами дорогих объектов как соединения с БД. Java EE 5 на самом деле довольно хорош работать с для большого количества пространств задач.