2016-05-03 4 views
3
//Below line of code works fine with the result, 
//maxBSONValue: org.mongodb.scala.bson.BsonObjectId = BsonObjectId{value=572865049229f27baf82c974} 
val maxBSONValue = org.mongodb.scala.bson.BsonObjectId("572865049229f27baf82c974") 

//Subsequent execution of below line results in error 
//error: org.mongodb.scala.bson.BsonObjectId.type does not take parameters 
val minBSONValue = org.mongodb.scala.bson.BsonObjectId("572865049229f27baf82c96f") 

Почему метод BsonObjectId :: apply (String) не работает во второй раз?Почему метод BsonObjectId :: apply (String) не работает во второй раз?

+0

Дополнительная информация: Создание такого метода работает все время, def getBsonObjectIdValue (v: String) = org.mongodb.scala.bson.BsonObjectId (v) – SunnyShah

ответ

2

Вместо вызова метода apply() от объекта BsonObjectId компаньона (here), это, кажется, видя BsonObjectId как тип (определяется here) и жалуется, что он не принимает параметров (что верно). Это является причиной сообщения об ошибке. Не уверен, почему это происходит. Проверьте this question и посмотрите, сможете ли вы найти что-то полезное (я не очень сильно его зарыл).

Извините за опубликование в качестве ответа, хотя на самом деле он не один, но я думаю, что он может поставить вас на правильный путь, и я не мог вписаться в комментарии.

+0

Большое спасибо за ваши усилия! Я действительно видел код, но не знаю, почему компилятор не видит метод применения компаньона? – SunnyShah

+1

Ну, это действительно странно, если это только тот фрагмент, который вы нам дали. Если они находятся в разных местах кода (особенно в разных классах), убедитесь, что дополнительных импортных товаров нет. Сегодня у меня была аналогичная ошибка из-за того, что моя IDE автоматически импортировала scala.collection в середине моего кода, поэтому у меня было столкновение между объектом Map comp и scala.Map type (shortand для scala.collection.immutable.Map) – slouc

+1

Начать изучение точный тип обоих BsonObjectIds в вашей среде IDE/REPL. – slouc

Смежные вопросы