创建通用groupBy方法

时间:2013-08-27 11:42:46

标签: java generics

我正在尝试从我拥有的对象列表中创建通用的groupBy方法,所以我的方法可能有这样的签名:

private Map<String, List<T>> groupBy(List<T> list, String fieldName) {

但它没有编译。缺少类型T,如何修复它以进行编译?我虽然通过java反射调用字段名称(getter)并将其分组并返回一个地图。

5 个答案:

答案 0 :(得分:4)

您需要在开头定义<T>。查看official tutorial了解更多信息

private <T> Map<String, List<T>> groupBy(List<T> list, String fieldName) {

}

答案 1 :(得分:1)

您需要在通用方法中声明类型参数<T>

private <T> Map<String, List<T>> groupBy(List<T> list, String fieldName) {
    //  ^^^ declare T
    //whatever
}

答案 2 :(得分:0)

试试这个

private <T> Map<String, List<T>> groupBy(List<T> list, String fieldName) {
...

答案 3 :(得分:0)

您需要创建generic method(不仅仅是接受泛型类型的方法)....

只需在<T>之后添加private

private <T> Map<String, List<T>> groupBy(List<T> list, String fieldName) {....}

答案 4 :(得分:0)

您缺少类型参数的定义:

private <T> Map<String, List<T>> groupBy(List<T> list, String fieldName) {

您可能也有兴趣查看Guava的多重映射,特别是grouping functionality