Мы можем получить доступ или запрос в строке Java стажер (постоянного) бассейн?


Есть ли способ получить доступ к содержимому пула констант строк в нашей собственной программе?

Скажем, у меня есть какой-то базовый код, который делает это:

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

Теперь в нашем пуле констант строк плавают 2 строки. Существует ли какой-либо способ получить доступ к пулу и распечатать вышеприведенные значения или получить текущее общее количество элементов, содержащихся в настоящее время в пуле?

То есть

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

1 ответ:

Вы не можете получить прямой доступ к String intern pool.

Согласно Javadocs String intern pool это:

Пул строк, изначально пустой, поддерживается частным образом строка класса.

Однако объекты String могут быть добавлены в этот пул с помощью метода String intern().

java.lang.String.intern() возвращает интернированную строку, то есть строку, имеющую запись в глобальном пуле строк. Если строка еще не находится в глобальном пуле строк, то она будет добавлено.

Программно вы можете следовать этому подходу:

  1. объявить Set<String> StringConstantPool = new HashSet<String>();
  2. вызов String.intern()
  3. добавьте возвращаемое значение String в этот пул StringConstantPool