Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串作为新类的唯一私有字段_Java_String_Constructor_Immutability_Private - Fatal编程技术网

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

Java 字符串作为新类的唯一私有字段,java,string,constructor,immutability,private,Java,String,Constructor,Immutability,Private,这里的一般问题是:如果我在创建一个新类,并且它唯一的私有字段是字符串,我可以这样做吗;在构造函数中设置该私有字段?我只是厌倦了,因为我不擅长java的整个引用部分。是的,因此只能从类本身访问私有字段的定义 作为提示,如果没有任何访问器,这可能会使此类对象变得毫无用处。当然。考虑这个例子。我添加了一些基本的防御性抄袭练习 /** * MyClass is an immutable class, since there is no way to change * its state after co

这里的一般问题是:如果我在创建一个新类,并且它唯一的私有字段是字符串,我可以这样做吗;在构造函数中设置该私有字段?我只是厌倦了,因为我不擅长java的整个引用部分。

是的,因此只能从类本身访问私有字段的定义


作为提示,如果没有任何访问器,这可能会使此类对象变得毫无用处。

当然。考虑这个例子。我添加了一些基本的防御性抄袭练习

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

我计划使用.charAt来挑选字符串的不同部分。感谢您的快速回复:如果您的私人字段也是最终字段,您甚至可以这样做。事实上,如果您不打算更改该字段,出于风格和技术原因,将其声明为最终字段是一个好主意。后者很难在注释中解释,但当类的实例可能被不同的线程创建和使用时,它会有所帮助。当您尝试它时发生了什么?编译,但在真正的测试可行之前,我不得不添加一些方法,但结果证明它是正确的>。因此,如果它被编译,您可以这样做。这个测试比在论坛上发帖要快得多-关键是,您可以引用本地对象,但一旦它超出范围,您就不再引用该对象了。我只是想确定我没有在事故中那样做。