Biblioteca Java para leer / escribir Mapa <String, String> a través de bean

Estoy buscando una biblioteca que proporcione acceso de lectura y escritura de tipo seguro de tipo a Map<String, String>través de un bean Java proxy. Por ejemplo:

interface Person {
  String getName();
  void setName(String name);
  int getAge();
  void setAge(int age);
}

Map<String, String> data = new HashMap<String, String>() {{
  put("name", "juni");
  put("age", "4");
}}

Person p = HypotheticalLibrary.bind(Person.class, data);
p.getName(); // returns "juni"
p.setAge(5); // calls data.put("age", "5") --- notice the implicit type conversion

¿Hay tal cosa?

Respuesta 1

No se de uno. Sin embargo, es bastante simple escribir uno usando un proxy . Debería escribir un InvocationHandler que reconozca a los captadores y establecedores, y obtenga o coloque en el mapa en consecuencia. Hay un bit incómodo, que convierte el nombre del método en una clave para el mapa, y un bit difícil, que determina cómo convertir los tipos.

Escribí una implementación rápida y sucia en ~ 60 líneas de código. Hace un trabajo bastante torpe en los tipos; se necesitarían otros cien para hacer un trabajo decente para todos los tipos básicos.

Respuesta: 2

¿Hay alguna forma de crear transacciones con Java SE? Por ejemplo, tenemos alguna clase con main y un método de entrada. Lo que hacemos es poner algunos números en la consola, agregarlos a una lista ...

Quiero ejecutar JAX-RS 2.0 / Jersey en Grizzly 2, pero ahora no sé cómo configurarlo. Encontré las siguientes dependencias de Maven: <dependency> <groupId> org.glassfish.grizzly </groupId> ...

Tengo el applet a continuación en mi código. Quiero eliminar este código de jsp e incluirlo al hacer clic en el botón y eliminarlo después del éxito de jQuery. <applet id = "jzebra-applet" name = "jZebra" code = "jzebra ....

Estoy buscando una expresión regular. Texto Ejemplo 1 Coincidencia 1.1 Coincidencia 45.67.21234.3 Coincidencia 1 no coincide1 12. No coincide Los valores extraídos / coincidentes serán: 1 1.1 45.67.21234.31 Estos ...