Java Generics WildCard - 如何在此处将泛型与 Lambda 一起使用?

标签 java generics lambda java-8

我正在尝试创建一个通用方法。我的 dto 是:

public class Master {
    private String string;
    private Date date;

    public String getString() {
        return this.string;
    }

    public Date getDate() {
        return this.date;
    }

    public void setString(String string) {
        this.string = string;
    }

    public void setDate(Date date) {
        this.date = date;
    }
}

扩展 Master 的我的 Child 类是:

public class Child extends Master {

    private Date newDate;

    public Date getNewDate() {
        return this.newDate;
    }

    public void setNewDate(Date newDate) {
        this.newDate = newDate;
    }
}

现在,我想做的是创建一个通用方法来获取 -

public static <T extends Master> Map<String, Map<Date, List<T extends Master>>> getRecalculateMasterMappedByInstrumentIdAndDate(List<T extends Master> masters) {
        return masters.stream().collect(Collectors.groupingBy(Child::getString, Collectors.groupingBy(x -> org.apache.commons.lang3.time.DateUtils.truncate(x.getDate(), Calendar.DAY_OF_MONTH))));
    }

上面的内容在编译时给我一个错误。我如何为其编写通用方法?

最佳答案

删除声明后的绑定(bind):

  • 返回类型:Map<String, Map<Date, List<T>>>
  • 参数类型:List<T> masters .

只能使用带有通配符 ( ? ) 的边界,或者在类型变量的声明中使用边界。

关于Java Generics WildCard - 如何在此处将泛型与 Lambda 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55745540/

相关文章:

java - StackOverFlow 错误发生时的识别点

java - 用换行符替换 <p> 标签的正则表达式

java - 表示数字的数据类型

java - Android (Java) ViewPager with Fragments 唤醒后 SwipeRefreshLayout 发送错误

java - 如何使用泛型参数将泛型类型转换为泛型类型?

c# - EntityFramework 中使用 'where' 语句的通用查询

java - 为什么 NIO.2 FileVisitor 类型是通用的?

java - 如何使用自己的reduce方法来区分列表

c# - 如何使用 LINQ 从通用列表中获取下一个合适的值?

Java lambda 和 HashMap<Boolean, Object>