2011-01-31 24 views
2

一般問題在這裏:如果我正在創建一個新類,並且它只是私有字段是一個字符串,我可以在構造函數中執行類似於this.privateString = argumentIn;的設置來設置該專用字段嗎?由於我對java的整個引用部分不太熟悉,所以我只是很疲倦。字符串作爲新類的唯一私有字段

+0

當你嘗試時發生了什麼? – EJP 2011-01-31 00:40:09

+0

已編譯,但我必須在實際測試結果可行之前添加幾個方法,但事實證明它是正確的>。< – V1rtua1An0ma1y 2011-01-31 01:43:30

+0

因此,如果編譯完成,您可以執行此操作。該測試比在論壇上發佈要快得多;-) – EJP 2011-01-31 02:48:46

回答

4

,因此專用字段的定義只能從類本身內部訪問。

作爲一個提示,沒有任何訪問器,這可能會使這個類的對象大多無用。

1

當然。考慮這個例子。我已經添加了一些基本的防禦性複製練習。

/** 
* MyClass is an immutable class, since there is no way to change 
* its state after construction. 
*/ 

public final class MyClass{ 

private final String myString; 

public MyClass(String myString){ 
    this.myString = myString; 
} 

/** 
    * Returns an immutable object. String is immutable. 
    * 
    */ 

public String getMyString(){ 
    return myString; 
} 

//no need to provide a setter to keep myString as immutable after initial state 
} 

考慮閱讀Joshua Bloch在defensive copying of fields的這篇文章。

相關問題