Как сделать метод generi c, который работает для всех сущностей? - PullRequest
1 голос
/ 04 мая 2020

Я определил несколько DeadlineEntities в своем коде. Теперь у меня есть метод, который я хочу применить ко всем этим DeadlineEntities. Чтобы не писать метод для каждой сущности, я решил решить это в общем.

Код

protected Multimap<Integer, Map<String, Double>> extract() throws IllegalAccessException {
    Field[] fields = PurchasingDeadlineValuesEntity.class.getDeclaredFields();
    Multimap<Integer, Map<String, Double>> map = ArrayListMultimap.create();

    for (MandantKagAccountEntity mandantEntity : m_k_a_E) {
        PurchasingDeadlineValuesEntity deadlineEntity = mandantEntity.getPurchasingDeadlineValuesEntity();
        if (deadlineEntity != null) {
            map.put(mandantEntity.getDb_5(), extractKagAndDeadlines(fields, deadlineEntity));
        }
    }
    return map;
}

Теперь мне частично удалось создать его в общем, но я не могу продолжить.

Моя попытка

protected Multimap<Integer, Map<String, Double>> extract(Class<T> clazz,                                                                                      Function<? super T, Object> func) {
    Field[] fields = clazz.getDeclaredFields();
    Multimap<Integer, Map<String, Double>> map = ArrayListMultimap.create();

    for (MandantKagAccountEntity mandantKagAccountEntity : m_k_a_E) {

    }
    return map;
}

Кто-нибудь знает, как мне поступить сейчас? Как получить объект из mandantKagAccountEntity и проверить, не является ли объект null?

Я бы тогда вызвал метод следующим образом:

protected Multimap<Integer, Map<String, Double>> getMap() {
    return this.extract(PurchasingDeadlineValuesEntity.class, MandantKagAccountEntity::getPurchasingDeadlineValuesEntity);
}

но здесь я получаю сообщение об ошибке, что метод не является stati c.

Может кто-нибудь сказать мне, что я делаю неправильно, и помочь мне?

...