2013-10-05 4 views
0

Я хочу, чтобы иметь возможность передавать 2 родовых типа в мой класс.Java и использование дженериков?

  • Первый общий тип может быть что-нибудь
  • Второй общий тип должен быть список определенного объекта.

Как я могу это достичь? Следующий код не компилируется, он просто показывает, к чему я стремлюсь.

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

попробовать 'открытый класс AbstractGroupedAdapter расширяет etc' –

ответ

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(); 
    } 
} 
Смежные вопросы