Допустим, у меня есть простое HashMap
:
Map<String, String> map = new HashMap<>();
map.put("field1","value1");
map.put("field2", "value2");
У меня также есть простой класс Java:
class SimpleClass {
public String field1;
public String field2;
}
Какой самый простой и элегантный способ создать экземпляр SimpleClass
с соответствующими полями / значениями, взятыми из карты? В этом случае результирующий экземпляр SimpleClass
должен получить field1
значение 'значение1 and
поле2 value
значение2`.
SimpleClass
уже определен, теперь нам нужно найти соответствующие ключи на карте, если совпадение найдено, его значение должно быть присвоено соответствующему полю класса.
В моем реальном приложении я получу список карт, и мне нужно преобразовать его в List<SimpleClass>
. Карта может содержать дополнительные ключи, которые необходимо пропустить (если нет подходящего поля класса).
Могу ли я использовать (например) гуаву для такого преобразования? Я работаю на Android, поэтому пока нельзя использовать потоки Java.
[править]
Моя попытка:
private SimpleClass mapToObject(Map<String, String> map)
{
SimpleClass result = new SimpleClass();
for(Field f: result.getClass().getDeclaredFields())
{
try
{
f.setAccessible(true);
f.set(result,map.get(f.getName()));
}
catch (Exception e)
{
Log.d("error", e.toString());
}
}
return result;
}