2009-08-01 48 views
17

我試圖使用Java庫(無源代碼可用),它定義了一些xxx.xxx.object包。 Scala抱怨軟件包名稱中存在「object」,所以我無法從它導入,也無法用完全限定名稱引用它的類。Scala:關鍵字作爲包名稱

有沒有辦法解決它?

回答

28

將對象包裹在'(1旁邊的引號)中應該可以工作。

xxx.xxx.`object` 
+1

我注意到在2.8.1.final,這仍然不能幫助您在控制檯 - 可能是一個錯誤的REPL代碼。導入工作正常,但嘗試使用您導入的某個符號,並且顯然某些內容不會在後臺轉義。 – spieden 2010-11-24 03:37:43

24

要完成agilefallanswer,所述Scala Language Specification提到的進口是由id

id ::= plainid 
| ‘\`’ stringLit ‘\`’ 

的標識符也可以通過反引號之間(主機的任意字符串來形成系統可能會對哪些字符串對於標識符合法性施加一些限制)。標識符由除反引號本身之外的所有字符組成。

當需要訪問作爲Scala中保留字的Java標識符時,帶反引號的字符串是一種解決方案。
例如,聲明Thread.yield()是非法的,因爲yield是Scala中的保留字。但是,這裏有一個解決方法:

Thread.`yield`() 
+0

Thanks ... +1 for complementary info – 2009-08-01 15:03:04

相關問題