有没有办法访问我们自己的程序中的String常量池的内容?
说我有一些基本的代码,这样做:
String str1 = "foo"; String str2 = "bar";
现在有两个字符串在我们的String常量池中浮动.有没有办法访问池并打印出上述值,或者获取当前池中当前包含的元素总数?
即
StringConstantPool pool = new StringConstantPool(); System.out.println(pool.getSize()); // etc
您不能直接访问String实习池.
根据 Javadocs String实习池是:
A pool of strings, initially empty, is maintained privately by the
class String.
然而,String对象可以使用String的intern()方法添加到此池中.
java.lang.String.intern()
返回一个interned字符串,即在全局String池中具有条目的字符串.如果String不在全局String池中,那么它将被添加.
以编程方式,您可以按照这种方法:
>声明集<String> StringConstantPool = new HashSet<String>();
>调用String.intern()
>将返回的String值添加到此池StringConstantPool中
代码日志版权声明:
翻译自:http://stackoverflow.com/questions/19049812/can-we-access-or-query-the-java-string-intern-constant-pool