Большое спасибо Дэниелу Прайдену за ответ на мой комментарий. Я должен был поднять его вчера во время отладки, но просто не застрял. Круто, ура !!!
трю на создание класса 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, который может работать без приведения типов.