2010-12-12 5 views
2

테이블에 표시하기 위해 Vaadin BeanItemContainer에 com.mongodb.DBObject 객체를로드하려고합니다. 나는 자바에서 Scala 로의 생성자의 번역에 매달려있다.스칼라에서 Vaadin BeanItemContainer 구성자를 어떻게 표현합니까?

생성자 정의는 다음과 같습니다 내가 항목을 추가 할 때

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

것은 :

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

을 나는 다음과 같은 얻을

BeanItemContainer(Class<? extends BT> type) 

이것은 스칼라 컴파일러를 전달 오류 :

[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)} 

의견/제안?

UPDATE :
이 시도 :

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

Class.forName을 사용하는 이유가 무엇입니까? 나는 컴파일러가 그 호출에서 반환 된 객체로부터 타입을 추론 할 수 있다고 생각하지 않는다. 단지 Class[_] 일 것이다. 당신이 classOf를 사용하는 경우 컴파일러가 타입을 결정하도록한다 : 즉

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

을 : 자바 DBObject.class 스칼라에서 classOf[DBObject]로 변환합니다.

+0

감사합니다. 나는 classO를 잊었다. 나는 같은 결론에 도달했지만 조금 더 간단했다. val bic = new BeanItemContainer (classOf [DBObject])를 사용하면됩니다. 즉, DBObject는 콩이라는 것을 좋아하지 않으므로 IndexedContainer를 사용하여 수동으로 채 웁니다. – jxstanford

0

이 시도 :

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

그건 그렇고, 줄의 어디에서 오류가 있는지 "^"마커를 제거했습니다. 오류 메시지를 붙여 넣을 때 보관하십시오.

+0

아, 미안 캐럿에 대해. 알았어. 제안한 코드에서 오류가 발생합니다. 나는 내가 여기서 포맷 할 수 있다고 생각하지 않기 때문에 오류와 함께 주요 질문을 업데이트했다. – jxstanford

관련 문제