我正在尝试从我拥有的对象列表中创建通用的groupBy方法,所以我的方法可能有这样的签名:
private Map<String, List<T>> groupBy(List<T> list, String fieldName) {
但它没有编译。缺少类型T,如何修复它以进行编译?我虽然通过java反射调用字段名称(getter)并将其分组并返回一个地图。
答案 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。