是否有办法在我们自己的程序中访问String常量池的内容?
说我有一些基本代码可以做到这一点:
String str1 = "foo";
String str2 = "bar";
现在我们的String常量池中有两个字符串浮动。有没有办法访问池并打印出上述值或获取当前池中当前包含的元素总数?
即
StringConstantPool pool = new StringConstantPool();
System.out.println(pool.getSize()); // etc
答案 0 :(得分:10)
您无法直接访问String intern pool
。
根据Javadocs String intern pool
:
最初为空的字符串池由私有维护 class String。
但是,可以使用String的intern()
方法将String对象添加到此池中。
java.lang.String.intern()
返回一个interned String,即在全局String池中有一个条目的String。如果String不在全局字符串池中,则将添加它。
以编程方式您可以采用以下方法:
Set<String> StringConstantPool = new HashSet<String>();
String.intern()
String
值添加到此池StringConstantPool