使这种方法成为 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/

10-15 23:51