2010-09-23 6 views
0

Я хочу изменить возвращаемый тип этого метода на класс (ReturnContainer), который может содержать объект tupelo в дополнение к другому возвращаемому значению, которое мне нужно отправить обратно вызывающему методу.не может быть разрешен к типу

Я никогда не работал с этой концепцией <T> в Java до этого, поэтому я не могу перенастроить этот метод, чтобы работать так, как мне это нужно.

public static <T extends LocationCapable> List<T> test(Class<T> incomingClass) 
{ 
    List<TestTuple<T>> tupelo = new ArrayList<TestTuple<T>>(); 
    return tupelo; 
} 

Когда я пытаюсь изменить код в листинге ниже, я получаю ошибку:

T cannot be resolved to a type 

Как я могу иметь тип возвращаемого ReturnContainer, но по-прежнему позволяют incomingClass быть динамичным тип?

public static ReturnContainer test(Class<T> incomingClass) 
{ 
      List<TestTuple<T>> tupelo = new ArrayList<TestTuple<T>>(); 
      ReturnContainer rc = new ReturnContainer(tupelo, incomingClass); 
    return rc; 
} 

ответ

6

Вы пропускаете параметр типа:

public static <T> ReturnContainer test(Class<T> incomingClass) 
{ 
    List<TestTuple<T>> tupelo = new ArrayList<TestTuple<T>>(); 
    ReturnContainer rc = new ReturnContainer(tupelo, incomingClass); 
    return rc; 
} 

на моих глазах, хотя, это выглядит странно. Должно быть, ReturnContainer тоже есть параметр типа? В этом случае у вас будет

public static <T> ReturnContainer<T> test(Class<T> incomingClass) 
{ 
    List<TestTuple<T>> tupelo = new ArrayList<TestTuple<T>>(); 
    ReturnContainer rc = new ReturnContainer<T>(tupelo, incomingClass); 
    return rc; 
} 
Смежные вопросы