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