我正在尝试从我拥有的对象列表中创建通用 groupBy 方法,因此尽管我的方法可能具有如下签名:
private Map<String, List<T>> groupBy(List<T> list, String fieldName) {
但它没有编译。缺少 T 型,如何修复它以进行编译?我虽然通过java反射调用字段名称(getter)并将其分组并返回一个映射。
您需要<T>
在开始时定义。查看官方教程以获取更多信息
private <T> Map<String, List<T>> groupBy(List<T> list, String fieldName) {
}
您需要<T>
在泛型方法中声明您的类型参数:
private <T> Map<String, List<T>> groupBy(List<T> list, String fieldName) {
// ^^^ declare T
//whatever
}
试试这个
private <T> Map<String, List<T>> groupBy(List<T> list, String fieldName) {
...
您需要创建一个泛型方法(而不仅仅是一个接受泛型类型的方法)......
只需在<T>
后面添加private
:
private <T> Map<String, List<T>> groupBy(List<T> list, String fieldName) {....}
您缺少类型参数的定义:
private <T> Map<String, List<T>> groupBy(List<T> list, String fieldName) {
您可能也有兴趣查看 Guava 的多图,尤其是分组功能。