2013-04-24 3 views
1

Мне нужно передать конструктору класс Map<ClassType1,Object>. если я прохожу только Map.class, у меня есть ошибка. Поэтому я хотел бы знать, что такое класс Map<MyClassType1,Object>?Что такое класс Map <MyClassType1, Object>

public class GetSessionRequest extends SpiceRequest<Map<ClassType1, Object>> { 

    private Client mClient; 
    public GetSessionRequest(Class<Map<ClassType1, Object>> clazz) { 
     super(clazz); 
    } 

    public GetSessionRequest(Client client) { 
     super(/*What should I pass here. I can't pass Map.class*/); 
     mClient = client; 
    } 


    @Override 
    public Map<ClassType1, Object> loadDataFromNetwork() throws Exception { 
     Map<ClassType1, Object> map = mClient.getSession(); 
     return map; 
    } 

} 
+0

Это класс, хотя. Все зависит от того, что ожидает и делает конструктор (я предполагаю, что это конструктор другого класса). Можете ли вы добавить код? – NilsH

ответ

2

Я думаю, что вы имеете в виду что-то вроде этого:

public class T { 
    public T(Class<Map<MyClassType1, Object>> cls) { 
    } 
} 

Но вам нужно вместо этого:

public class T { 
    public T(Class<? extends Map<MyClassType1, Object>> cls) { 
    } 

    public static void main(String[] args) { 
     Map<MyClassType1, Object> m = new HashMap<MyClassType1, Object>(); 
     T t = new T(m.getClass()); 
    } 
} 
1

Map - это интерфейс. Существует множество реализаций, например, HashMap.

0

Map не имеет конструктора, его интерфейс, вы можете использовать HashMap<ClassType1,Object> или TreeMap<ClassType1,Object>

+0

зачем голосовать вниз ???? – Dima

1

Если это позволяет карту interfacemethod or constructor может позволить любому implementation из Map interface

0

Карта <> является интерфейсом, как и Список <> и интерфейс не имеет конструктора. Вы должны использовать HashMap, TreeMap или любой класс, который реализует интерфейс.

Смежные вопросы