Java和泛型的使用?

时间:2013-10-05 18:04:56

标签: java android generics

我希望能够将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();
   }
}

1 个答案:

答案 0 :(得分: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();
   }
}