字符串作为新类的私有字段

时间:2011-01-31 00:00:02

标签: java string constructor immutability private

这里的一般问题:如果我正在创建一个新类,并且它只是一个字符串的私有字段,我可以在构造函数中执行类似this.privateString = argumentIn;的操作来设置该私有字段吗?我只是厌倦了,因为我不熟悉java的整个引用部分。

2 个答案:

答案 0 :(得分:4)

,因此私人字段的定义只能在类本身内访问。

作为一个提示,没有任何访问器,这可能会使这个类的对象大多无用。

答案 1 :(得分: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
}

考虑阅读约书亚布洛赫在defensive copying of fields上的这篇文章。