0

In Java, is it advisable to create another String when returning fields that are Strings in a getter method. my_name is a String field of a class.

public String getName()
{
    String rString = my_name.toString();
    return rString;
}
4

2 回答 2

12

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

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

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

于 2013-02-11T18:08:07.840 回答
2

不。在 Java 中,字符串是不可变的,因此调用 getter 的任何人都无法修改它。

此外,由于 Java 将字符串池化以重用它们的方式,您的代码将执行与直接返回字段完全相同的操作。

于 2013-02-11T18:09:53.067 回答