0

我希望能够将 2 个泛型类型传递给我的班级。

  • 第一个泛型类型可以是任何东西
  • 第二个泛型类型必须是某个对象的列表。

我怎样才能做到这一点?以下代码无法编译,它只是显示了我的目标。

public class AbstractGroupedAdapter<T, List<Y>> extends ArrayAdapter<Y> {

   protected Map<T, List<Y>> groupedItems;

   protected T getHeaderAtPosition(int position) {
      // return the correct map key
   }

   protected Y getItemAtPosition(int position) {
      // return the correct map value
   }

   @Override
   public int getCount() {
      return groupedItems.size() + groupedItems.values().size();
   }
}
4

1 回答 1

2

在 Java 中,您不能在其名称声明中限定泛型类型参数。相反,通常声明类型参数并在泛型绑定中使用它,即:

public class AbstractGroupedAdapter<T,Y> extends ArrayAdapter<List<Y>> {


  protected Map<T, List<Y>> groupedItems;

   protected T getHeaderAtPosition(int position) {
      // return the correct map key
   }

   protected Y getItemAtPosition(int position) {
      // return the correct map value
   }

   @Override
   public int getCount() {
      return groupedItems.size() + groupedItems.values().size();
   }
}
于 2013-10-05T18:08:45.460 回答