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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (13)

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

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

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

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

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()返回一个实际的字符串,即在全局字符串池中有一个条目的字符串。如果该字符串不在全局字符串池中,那么它将被添加。

以编程方式,你可以遵循这种方法:

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

扫码关注云+社区