Java Hashmap armazena apenas o valor de um tipo específico na chave
Estou procurando criar uma classe Hashmap que permita armazenar chaves e valores. No entanto, o valor só pode ser armazenado se corresponder a um tipo específico e o tipo depender doruntime value da chave. Por exemplo, se a chave forEMAIL(String.class)
, o valor armazenado deve ser do tipoString
.
Tenho o seguinte ENUM personalizado:
public enum TestEnum {
TDD,
BDD,
SHIFT_RIGHT,
SHIFT_LEFT;
}
Criei a seguinte classe:
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));
}
}
Gostaria de usar métodos comosetData
egetData
e armazene valores emsessionData
. Além disso, quero garantir se o valor é uma lista de objetos e também armazenados corretament
Também estou lutando para evitar toString, basicamente preciso de um getData genérico que possa funcionar sem a conversão de tip