在我处理的一个旧代码库中,有大量字符串字面量。其中许多是重复的。例如,字符串“userID”在500个地方使用。可能有一千个这样的字面量被重复使用。IntelliJ Idea静态代码分析建议我将它们提取为常量。如果IDE自动为我执行此重构,而我不需要输入任何代码,那么我应该这样做吗?
总的来说,将许多这样的重复字符串字面量提取为常量是一个好主意吗?这显然会避免重复,并提供单一的访问点、声明等。
然而,某些字面量在访问时才出现。如果我将所有字面量都声明为常量(static final),那么所有这些常量都将一起加载。在这种情况下,将所有这些字面量声明为常量是一个好主意吗?您能提供一些垃圾收集、内存空间预防措施的指针吗?在这种情况下使用的最佳实践是什么?
总的来说,将许多这样的重复字符串字面量提取为常量是一个好主意吗?这显然会避免重复,并提供单一的访问点、声明等。
然而,某些字面量在访问时才出现。如果我将所有字面量都声明为常量(static final),那么所有这些常量都将一起加载。在这种情况下,将所有这些字面量声明为常量是一个好主意吗?您能提供一些垃圾收集、内存空间预防措施的指针吗?在这种情况下使用的最佳实践是什么?
一些注释:我知道字符串字面量是被池化的。因此,在最坏的情况下,我认为我不会节省任何内存。另外,似乎jdk 7会将这些字符串放在堆中而不是永久代中。我看到了像我这样的几个 问题 类似的问题,但感觉不同。所以在这里发布。
谢谢