2012-04-19 22 views
1

我有一個類來存儲我所有的常量值,並且一切都很好,直到我決定存儲一個Map。Grails Groovy - 無法從另一個類訪問靜態地圖(集合)

final class Constants { 
    public static final Map states = [a: 1,b: 2] 
} 

而且裏面有服務:

assert Constants.states.a == 1 

結果錯誤:

assert Constants.states.a == 1 | | a false 

它的返回鍵而不是價值。而且只有當Map在另一個類中時纔會發生,因爲如果我在聲明斷言的同一個類中聲明它,則所有事情都按預期工作。

我真的很困惑,這不應該發生,是嗎?

+3

我想你在你的示例代碼中有一些錯別字。我正在清理它們,但我不知道正確的代碼是什麼。請編輯第二個(我認爲它應該是'Constants.states.a')和第三個代碼塊(我認爲這是一個斷言錯誤)。另外,當我使用您的示例Constants類時,我沒有任何麻煩。 – OverZealous 2012-04-19 04:35:57

+0

我糾正了錯別字,對此感到抱歉。斷言錯誤直接從Grails返回的錯誤頁面複製。而且即使堆棧跟蹤也表示我正在比較一個== 1 – GalmWing 2012-04-21 18:29:46

回答

0

當您添加最終訪問說明符時,此類是否公開?先檢查一下。如果它然後嘗試 斷言Constants.states.get('a')== 1

+0

是的,這個類是公開的,它有更多的屬性,我可以訪問沒有任何問題。我已經嘗試過.get('a')和['a']但是相同的事件 – GalmWing 2012-04-20 21:13:05

+0

你確定你正在執行'assert Constants.states.a == 1'而不是'assert Constants.a == 1'像你一樣的問題暗示 – chethan 2012-04-21 15:44:58

+0

哦,對不起,是的,我誤打錯了我的問題。我在做'Constants.states.a == 1'。 (我糾正了它)。 – GalmWing 2012-04-21 18:26:22

相關問題