Мы можем получить доступ или запрос в строке Java стажер (постоянного) бассейн?
Есть ли способ получить доступ к содержимому пула констант строк в нашей собственной программе?
Скажем, у меня есть какой-то базовый код, который делает это:
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Пул строк, изначально пустой, поддерживается частным образом строка класса.
intern()
.
java.lang.String.intern()
возвращает интернированную строку, то есть строку, имеющую запись в глобальном пуле строк. Если строка еще не находится в глобальном пуле строк, то она будет добавлено.Программно вы можете следовать этому подходу:
- объявить
Set<String> StringConstantPool = new HashSet<String>();
- вызов
String.intern()
- добавьте возвращаемое значение
String
в этот пулStringConstantPool