0

我正在尝试从我拥有的对象列表中创建通用 groupBy 方法,因此尽管我的方法可能具有如下签名:

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

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

4

5 回答 5

4

您需要<T>在开始时定义。查看官方教程以获取更多信息

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

}
于 2013-08-27T11:44:20.633 回答
1

您需要<T>在泛型方法中声明您的类型参数:

private <T> Map<String, List<T>> groupBy(List<T> list, String fieldName) {
    //  ^^^ declare T
    //whatever
}
于 2013-08-27T11:45:12.190 回答
0

试试这个

private <T> Map<String, List<T>> groupBy(List<T> list, String fieldName) {
...
于 2013-08-27T11:44:52.793 回答
0

您需要创建一个泛型方法(而不仅仅是一个接受泛型类型的方法)......

只需在<T>后面添加private

private <T> Map<String, List<T>> groupBy(List<T> list, String fieldName) {....}
于 2013-08-27T11:45:40.420 回答
0

您缺少类型参数的定义:

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

您可能也有兴趣查看 Guava 的多图,尤其是分组功能

于 2013-08-27T11:45:54.547 回答