2011-06-26 49 views
4

我使用的Java API,它看起來像:如何在scala中指定Foo.class?

import com.google.code.morphia.Morphia; 

..... 

    val morphia = new Morphia(); 
    morphia.map(Hotel.class).map(Address.class); 

,但它給Scala編譯器錯誤。 以上scala中正確的代碼是什麼?請注意,.map被定義爲 morphia API的一部分,不會與scala映射混淆。

+0

喲得到什麼編譯錯誤? – maasg

回答

7

假設你的問題是與.class部分,斯卡拉相當於Hotel.class將是classOf[Hotel],同樣對於Address

希望這可以解決您的問題,雖然很難說沒有看到完整的編譯器輸出。

+0

這修復了編譯器錯誤。希望我在完成代碼時也不會遇到運行時錯誤。 – ace

+0

不幸的是,斯卡拉選擇了這種格式,這需要比標準Java幾乎多兩倍的打字量。我雖然斯卡拉需要更少的打字。 – ace

+1

斯卡拉*不需要打字;在實踐中,你會發現'classOf [T]'構造幾乎是不需要的。在Scala中處理類型依賴邏輯的常用技術是模式匹配。 –

1

編輯:看了API之後;你真正想要的是:

classOf[T] 

eg。

classOf[Hotel] 

More info在Scala的類型系統上。


錯誤答案,但也許是有用的,如果有人通過這個問題標題誤導:

class是Scala的保留字。如果你想使用它作爲一個字段或方法的名稱,你需要用反引號括之:

Hotel.`class` 
3

您應該使用classOf[Hotel]

相關問題