Estoy buscando una forma de crear un HashMap que se correlacione con tipos mixtos.Java Mapeo de tipos mixtos
Por ejemplo, la siguiente funcionaría en Python (nótese que una pitón dict
es similar a una de Java HashMap
):
d = dict()
d["str"] = "This is a string"
d["flt"] = 1.23
d["int"] = 5
y cuando se accede a d[x]
, se devolvería el tipo apropiado (cadena, flotador, int en este ejemplo).
En Java, podría ir con un HashMap<String, Object>
, pero realmente no tengo una forma de decir inmediatamente de qué tipo es cada objeto.
Por el contrario, lo que intento hacer es crear una clase MixedType
que contenga un objeto, pero también su información de tipo original, para que pueda descifrarlo más tarde. Por ejemplo:
public class MixedMap
public static class MixedType
{
public Class<?> cls;
public Object val;
public MixedType(Class<?> c, Object v)
{
this.cls = c;
this.val = v;
}
}
public static void main(String args[])
{
MixedType m1 = new MixedType(String.class, "This is a String");
System.out.println((m1.cls)m1.val);
}
}
Tenga en cuenta que esto es lo que estoy tratando hacer :-) ya que es en este momento no se queja de que la compilación m1 cannot be resolved to a type
.
Entonces mi pregunta es, ¿cómo puedo solucionar esto? Otras formas de lograr el mismo objetivo serían bienvenidas, pero no responda diciéndome que esto limita la capacidad de verificación de tipos del compilador: lo sé y estoy de acuerdo con eso.
Gracias de antemano.
¿Puedo preguntar: ¿qué harás con los objetos una vez recuperados? Siento que normalmente hay una mejor manera de diseñar esto para evitar tener que lanzar en absoluto. –
Incluso si tiene información de tipo almacenada en sus 'objetos' simples, ¿cómo espera saber qué hacer después de lanzarlos? –
Claro, usaré el HashMap como un objeto de tipo "configuración", donde el usuario especificará ciertos ajustes de configuración que serán analizados y colocados en este mapa. En ciertos puntos del programa verificará si se establece una determinada opción de configuración; si es así, úsala y, si no, utiliza la predeterminada. La razón de la necesidad de tipos mixtos es que algunas opciones de configuración sean cadenas, otras flotantes, otras entradas, etc. – jedwards