2014-02-23 65 views
2

的含義我試圖圍繞Scala語言來思考問題,並認爲最好的學習方法是將其付諸實踐。當在Java項目(Spring)和我的Scala項目之間複製粘貼代碼時,IDE做了一個我不明白的轉換。在互聯網和文檔中搜索它讓我不幸工作。private [context]

代碼:

@Bean private[context] def passwordEncoder: PasswordEncoder = { 
    return new BCryptPasswordEncoder 
} 

當編譯上面的代碼編譯器會抱怨:

`error: context is not an enclosing class` 

有人能解釋一下什麼是private[context]部分手段?

回答

4

context只是一個佔位符,您可以在其中填寫您希望該方法爲私有的上下文。儘管這是可選的。如果你沒有指定上下文,那麼該成員變成「class-private」,這個afaik在Java中的行爲類似於private。背景:Scala提供了不止一種程度的訪問規範:對象私有規範(即private[this])規定所討論的成員只能由在同一對象上調用的成員看到,而不能從不同的對象中看到,即使它們屬於同一類型。您也可以使用軟件包名稱或而不是this,它是根名稱空間的別名。

private修飾符可以在模板的任何定義或聲明中使用:在Scala Language Reference的 - 「修飾符部分5.2」

更多這方面的信息中可以找到。

[...]

該改性劑可以與標識符C(例如private[C]),其必須表示一個類或包包圍定義合格。標有這樣一個修飾符的成員只能從包C中的代碼或者只能從類C和它的伴隨模塊(§5.4)中的代碼訪問。

+0

謝謝你!這讓我更加清楚。你指出在AccessQualifier進一步閱讀的規範中找到它的好東西。 – Bart