Как я могу выразить Vaadin BeanItemContainer в Scala? - PullRequest
2 голосов
/ 12 декабря 2010

Я пытаюсь загрузить группу объектов com.mongodb.DBObject в Vaadin BeanItemContainer для отображения в таблице.Я застреваю при переводе конструктора из Java в Scala.

Определение конструктора:

BeanItemContainer(Class<? extends BT> type) 

Передается компилятор scala:

val bic = new BeanItemContainer(Class.forName("com.mongodb.DBObject"))

Однако, когда я пытаюсь добавить элемент:

mtl.toArray.foreach {t => bic.addBean(t)}

я получаю следующую ошибку:

[ERROR]com/sentientswarm/traderdashboard/UploadTradesWindow.scala:140: error: type mismatch;
 found   : t.type (with underlying type com.mongodb.DBObject)
 required: ?0 where type ?0
            mtl.toArray.foreach {t => bic.addBean(t)}

Есть мысли / предложения?

ОБНОВЛЕНИЕ:
Пробовал:

val bic: BeanItemContainer[DBObject] = new BeanItemContainer(Class.forName("com.mongodb.DBObject"))

Результат:

[ERROR]com/sentientswarm/traderdashboard/UploadTradesWindow.scala:140: error: type mismatch;
 found   : java.lang.Class[?0(in value bic)] where type ?0(in value bic)
 required: java.lang.Class[_ <: com.mongodb.DBObject]
            val bic: BeanItemContainer[DBObject] = new BeanItemContainer(Class.forName("com.mongodb.DBObject"))
                                                                                      ^

Спасибо, Джон

Ответы [ 2 ]

2 голосов
/ 12 декабря 2010

По какой причине вы используете Class.forName?Я не думаю, что компилятор может определить тип из возвращенного объекта из этого вызова, это будет просто Class[_].Если вы используете classOf, он должен позволить компилятору определить тип:

val bic = new BeanItemContainer[DBObject](classOf[DBObject]))

Другими словами: DBObject.class в Java переводится как classOf[DBObject] в Scala.

0 голосов
/ 12 декабря 2010

Попробуйте это:

val bic: BeanItemContainer[BT] = new BeanItemContainer(Class.forName("com.mongodb.DBObject"))

Кстати, вы удалили маркер "^", где в строке указана ошибка.Пожалуйста, сохраняйте его при вставке сообщений об ошибках.

...