这是一种确保
CONSTANT实际上不是常数的技术。
当Java编译器看到对最终静态基元或String的引用时,它将该常量的实际值插入使用它的类中。如果您随后在定义类中更改常量值,但不重新编译using类,它将继续使用旧值。
通过在“常量”字符串上调用intern(),编译器不再将其视为静态常量,因此using类实际上将在每次使用时访问定义类的成员。
JLS引文:
编译时常量的定义:http : //docs.oracle.com/javase/specs/jls/se6/html/expressions.html#5313
隐含对编译时常量的更改(大约在页面的一半):http : //docs.oracle.com/javase/specs/jls/se6/html/binaryComp.html#45139



