有什么办法可以使这种类型化的方法通用吗?

Is there any way to make this typified method generic?

我正在尝试编写一种方法,该方法采用任何类型的任何集合、两个函数和两个表示特定限制的整数值。

为了更好地理解,我将展示一个我想构建泛型的示例方法。

private void buildSums() {
    double sum = 0;
    for (YearlyLineValuesEntity y_l_v_E : yearlyList) {
        if (y_l_v_E.getDb() >= 20001 && y_l_v_E.getDb() <= 20155) {
            sum += y_l_v_E.getAmount();
        }
    }
}

示例方法中的 return 值在这种情况下并不重要。仅用于基本了解我的目标。

这是我的尝试:

上面 if 语句中的数字在我试过的以下方法中由参数 "from" 和 "to" 表示。 getDb() 应该来自参数 "propertyDb" 而 getAmount() 应该来自 "propertyAmount"-paramater.

    <T> List <Double> sumUpGroup(Collection<? extends T> entityList, Function<? super T, Integer> propertyDb, Function<?
        super T, Double> propertyAmount, int from, int to) {
    Double sum = null;
    List<Double> list = null;
    for (int i = 0; i < entityList.size(); i++) {
        EntityList x = entityList.get(i); //generic type
        if (x.getDB() >= from && x.getDB() <= to) { //propertyDb here
            sum += x.getAmount(); //propertyAmount here
        }
    }
    list.add(sum);
    return list;
}

我不知道如何使用作为方法中参数的 2 个函数在代码中进一步处理。我需要另一种方法来解决这个问题吗?

你们有什么想法吗?谢谢

像下面这样的东西会起作用(为了清楚起见,我删除了列表内容)

<T> double sumUpGroup(Collection<? extends T> entityList, 
    Function<? super T, Integer> dbAccessor, 
    Function<? super T, Double> amountAccessor, 
    int from, int to) {

    double sum = 0;
    for (T entity : entityList) {
        int value = dbAccessor.apply(entity);
        if (value >= from && value <= to) {
            sum += amountAccessor.apply(entity);
        }
    }

    return sum;
}

然后您可以按如下方式调用该方法,当然要使用正确的方法名称

sumUpGroup(myEntities, Entity::getDbValue, Entity::getAmount, 0, 100);