Преобразовать список значений объекта в POJO

Привет у меня есть следующее возвращаемое значение из зависимости. Я пытаюсь преобразовать его в POJO, с которым я его представляю.

Структура возвращаемого типа:

   DependencyAPIResult
     - List<Attribute>

Каждый атрибут имеет следующее определение класса:

public class Attribute {

    @NonNull private final AttributeKey key;
    @NonNull private final AttributeValue value;

    Getters
    .
    .
    .
    Setters
    .
    .
    .
}

Я хочу сопоставить этот результат с POJO, представленным:

public class MyPOJO {

    private pojoId;
    private pojoName;
    private pojoValue;
}

То, как я сейчас конвертирую результат в POJO, выглядит так:

String pojoId = null;
String pojoName = null;
String pojoValue = null;

for (Attribute attribute : result.getAttributes()) {
    switch (attribute.getKey().getName()) {
    case "pojoId"
        id = attribute.getValue().getStringValue();
        break;
    case "pojoName":
        name = attribute.getValue().getStringValue();
        break;
    case "pojoValue":
        pojoValue = attribute.getValue().getStringValue();
        break;
    default:
        break;
    }
}

Есть ли метод / маппер или, возможно, лямбда-функция Java 8, которую я могу использовать, чтобы сделать это лучше? Спасибо!

1 ответ

Решение

Вы можете хранить их в Map вместо использования for с switch:

Map<String, String> valuesByKeyName = 
result.getAttributes().stream()
                      .collect(Collectors.toMap(k -> k.getKey().getName(), 
                               v -> v.getValue().getStringValue()));

String id = valuesByKeyName.get("pojoId");
String name = valuesByKeyName.get("pojoName");
String pojoValue = valuesByKeyName.get("pojoValue");

Pojo pojo = new Pojo(id, name, pojoValue);
Другие вопросы по тегам