Задать вопрос
@n199a
Java

Как получить адрес ссылки на объект типа String в Java?

Имеется строка:
String s1 = "Hello world!";

Как получить значение адреса, которое хранится в переменной s1, в пулле строк в Java?
  • Вопрос задан
  • 2384 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Стандартными средствами никак. С помощью грязных хаков можно, но не факт, что они будут работать всегда и во всех JVM:
class AddressExtractor {
    public long pointerValue;
}

public class DirtyHack {
    public static void main(String[] args) throws Exception {
        AddressExtractor addressExtractor = new AddressExtractor();
        Class<? extends AddressExtractor> clazz = addressExtractor.getClass();
        Field field = clazz.getDeclaredField("pointerValue");
        Field type = Field.class.getDeclaredField("type");
        AccessibleObject.setAccessible(new AccessibleObject[]{field, type}, true);
        type.set(field, Object.class);
 
        String s = "test";
        field.set(addressExtractor, s);
        System.out.println(Long.toHexString(addressExtractor.pointerValue));
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы