Большое спасибо Дэниелу Прайдену за ответ на мой комментарий. Я должен был поднять его вчера во время отладки, но просто не застрял. Круто, ура !!!

трю на создание класса Hashmap, который позволяет мне хранить ключи и значения. Однако значение может быть сохранено только в том случае, если оно соответствует определенному типу, а тип зависит отвремя выполнения ключа. Например, если ключEMAIL(String.class)то сохраненное значение должно быть типаString.

У меня есть следующие пользовательские ENUM:

public enum TestEnum {
    TDD,
    BDD,
    SHIFT_RIGHT,
    SHIFT_LEFT;
}

Я создал следующий класс:

import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;

public class test {

    private static final Map<ValidKeys, Object> sessionData = new HashMap<>();

    public enum ValidKeys {
        EMAIL(String.class),
        PASSWORD(String.class),
        FIRST_NAME(String.class),
        LAST_NAME(String.class),
        CONDITION(TestEnum.class);

        private Class type;
        private boolean isList;
        private Pattern pattern;

        ValidKeys(Class<?> type, boolean isList) {
            this.type = type;
            this.isList = isList;
        }

        ValidKeys(Class<?> type) {
            this.type = type;
        }
    }

    public <T> void setData(ValidKeys key, T value) {
        sessionData.put(key,value);
    }


    public Object getData(ValidKeys key) {
        return key.type.cast(sessionData.get(key));
    }


    public static void main(String[] args) {
        test t = new test();
        t.setData(ValidKeys.CONDITION,TestEnum.TDD);
        System.out.println(t.getData(ValidKeys.CONDITION));
    }
}

Я хотел бы использовать такие методы, какsetData а такжеgetData и хранить значения вsessionData, Кроме того, я хочу убедиться, что значение представляет собой список объектов, которые также хранятся правильно.

Я также изо всех сил пытаюсь избежать toString, в основном мне нужен универсальный getData, который может работать без приведения типов.

Ответы на вопрос(1)

Ваш ответ на вопрос