在getter方法中,我应该克隆返回的String吗?

use*_*241 0 java string field cloning getter-setter

在Java中,建议在getter方法中返回字符串时创建另一个String.my_name是类的String字段.

public String getName()
{
    String rString = my_name.toString();
    return rString;
}
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 11

在Java中,建议在getter方法中返回字符串时创建另一个String.my_name是类的String字段.

,这样做没有意义.由于Java中的字符串是不可变的,当您尝试修改getter方法返回的字符串(即重新分配当前指向字符串对象的字符串引用,到另一个字符串)时,它将创建一个新字符串,并分配一个引用将该字符串转换为当前字符串引用,从而将其与原始字符串分离.

但是,如果你有mutable字段,比如a array,那么在这种情况下,如果你希望你的对象是不可变的,建议你返回它的防御性副本.