經驗可以發現,斯卡拉允許名稱衝突爲對象的私有變量和方法象下面這樣:自同名領域和存取斯卡拉
class Test {
private[this] var x = 1
def x(): String = this.x.toString
}
此代碼是有效的,至少斯卡拉2.10和產生什麼我希望(反編譯成Java):
public class Test {
private int x;
public String x() {
return BoxesRunTime.boxToInteger(x).toString();
}
public Test() {
x = 1;
}
}
的問題是,我不知道如果我能靠這種行爲在以後的斯卡拉釋放,因爲我無法找到規範的權威證明這行爲是通過設計。那麼,任何人都可以提出我這樣的知識來源嗎?
更新:我的目標是使用此方法將Hibernate數據模型映射到Scala類。由於沒有簡單的方法可以讓Hibernate支持Scala集合,所以我想將Java集合映射到一個專用字段中,然後將這個Java集合封裝到一個自我標題訪問方法中的Scala集合中。關鍵要求是保持字段和方法具有相同的名稱,因爲我還希望保留邏輯Hibernate集合名稱,例如在HQL中引用它。
爲什麼不直接使用的情況下,類?它會給你這種相同的行爲,如果你想改變x只使用內置的複製功能。 – cmbaxter
有趣的是,如果你從'def x()'離開了parens,它不會編譯 –