在第 5.1.4 章,Java 中的现代编译器实现:
public class Symbol {
private String name;
private Symbol (String n) { name = n; }
private static java.util.Dictionary dict = new java.util.Hashtable();
public String toString() { return name; }
public static Symbol symbol(String n) {
String u = n.intern();
Symbol s = (Symbol)dict.get(u);
if (s == null) { s = new Symbol(u); dict.put(u, s); }
return s;
}
}
我不明白为什么在这里使用字符串实习生,因为Hashtable
用于key.equals(...)
检查身份。
你能告诉我原因吗?谢谢!