Как получить имя переменной?

Теоретическая задача: есть класс и каждый раз при создании его объектов, этот объект добавляется в статический ArrayList класса После чего в цикле foreach я перебираю каждый элемент списка объектов и вывожу по шаблону "Объект " + имя_переменной

Как можно взять имя переменной в данном случае?


Ответы (1 шт):

Автор решения: Anastasiya

Воспользуйтесь рефлексией и сохраняйте в список имена. Например:

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class TestClass {
    private static List<String> names = new ArrayList<>();

    private TestClass className = new TestClass();
    private TestClass anotherName = new TestClass();

    public static void main(String[] args) {
        List<Field> fields = Arrays.stream(TestClass.class.getDeclaredFields())
                .filter(f -> f.getType().getSimpleName().equals("TestClass"))
                .collect(Collectors.toList());

        fields.forEach(f -> names.add(f.getName()));
        names.forEach(System.out::println);
    }
} 

Вывод:

className
anotherName
→ Ссылка