使这种方法成为 native 方法背后的逻辑是什么?
与仅使用哈希映射制作实习字符串池相比有什么优势?
看起来有点奇怪,但似乎在非 native 代码中很容易做到:
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;
}
}
// ...
}
那么为什么它是 native 代码呢?
最佳答案
你错了。根据规范,String.intern()
必须与常量池交互,以满足“所有文字字符串都被实习”的要求。 Java 代码无法做到这一点。
关于java - 为什么 String.intern() 是 native 方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31486354/