我们是否可以访问或查询 Java 字符串实习生(常量)池?

2022-09-02 22:27:29

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

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

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

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

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

答案 1

您不能直接访问 .String intern pool

根据Javadocs是:String intern pool

字符串池(最初为空)由类 String 下维护。

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

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

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

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

答案 2