将此方法本机化的原因是什么?
使用哈希映射创建实体化字符串池的优势是什么?
看起来有点奇怪,但在非本机代码中似乎很容易做到:
import java.util.HashMap;
public class String {
// ...
private final static HashMap<String, String> pool = new HashMap<>();
public String intern() {
if (pool.containsKey(this))
return pool.get(this);
synchronized (pool) {
if (pool.containsKey(this))
return pool.get(this);
pool.put(this, this);
return this;
}
}
// ...
}
那么为什么它是原生代码?
答案 0 :(得分:4)
在非本机代码中似乎很容易做到......
你错了。根据规范,String.intern()
必须与常量池进行交互,以满足“所有文字字符串被实习”的要求。这不能用Java代码完成。