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

问题描述:

一般问题在这里:如果我正在创建一个新类,并且它只是私有字段是一个字符串,我可以在构造函数中执行类似于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

,因此专用字段的定义只能从类本身内部访问。

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

当然。考虑这个例子。我已经添加了一些基本的防御性复制练习。

/** 
* 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的这篇文章。