转载

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

有没有办法访问我们自己的程序中的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

原文  https://codeday.me/bug/20181016/294589.html
正文到此结束
Loading...