我知道JVM中的字符串池以及文字和字符串对象之间的区别.我知道文字是自动实习的,但这条线的目的是什么呢:
public static final String PARAMETER = "value".intern();
在我的问题上,我总是找到大量的文字,这些文字解释了我同样强调文字和对象之间的区别,并提到文字已经被实习.因此,我想知道使用intern()而不是文字的那个棘手的行的基础.
这种类型的代码的主要好处是防止编译时常量被内联.
例如,假设您在一个类中有一个常量,并且您有许多其他类引用该常量.通常,如果更改常量值,则需要重新编译所涉及的所有类.在字段上使用intern()将阻止常量的内联,并且意味着仅重新编译常量类就足够了.从理论上讲,这种方法会有较差的表现,尽管我不知道可能会有多重要.
This SO question 涵盖相同的主题,是一个有用的阅读.
翻译自:https://stackoverflow.com/questions/21260072/why-constant-strings-use-intern