我们可以访问或查询Java String intern(常量)池吗?

有没有办法在我们自己的程序中访问String常量池的内容?

假设我有一些基本代码可以做到这一点:

String str1 = "foo"; String str2 = "bar"; 

现在我们的String常量池中有两个字符串浮动。 有没有办法访问池并打印出上述值或获取池中当前包含的当前元素总数?

 StringConstantPool pool = new StringConstantPool(); System.out.println(pool.getSize()); // etc 

您无法直接访问String intern pool

根据Javadocs String intern pool是:

最初为空的字符串池由String类私有维护。

但是,可以使用String的intern()方法将String对象添加到此池中。

java.lang.String.intern()返回一个interned String,即在全局String池中有一个条目的String。 如果String不在全局字符串池中,则将添加它。

以编程方式,您可以遵循此方法:

  1. 声明Set StringConstantPool = new HashSet();
  2. 调用String.intern()
  3. 将返回的String值添加到此池StringConstantPool