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

时间:2013-09-27 11:37:48

标签: java string pool

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

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

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

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

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

1 个答案:

答案 0 :(得分:10)

您无法直接访问String intern pool

根据Javadocs String intern pool

  

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

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

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

以编程方式您可以采用以下方法:

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