Java универсальный возвращаемый универсальный список типа параметра - PullRequest
0 голосов
/ 16 февраля 2019

Я хотел бы создать следующее:

//infer the type from parameter but restrict it to one of
// Proxy's subtype. return a list of this sub type
public static List<T> process(<T extends Proxy> proxy)
{
  return new ArrayList<T>(); //just for example
}

Использование:

List<ConcreteTypeOfProxy> list = process(new ConcreteTypeOfProxy());

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

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Вам не нужен какой-либо метод, и, следовательно, вам не нужны никакие параметры, чтобы сделать это:

List<ConcreteTypeOfProxy> list = new ArrayList<>();

Помните: между ArrayList<ConcreteTypeOfProxy> и ArrayList<AnyOtherType> нет никакой разницы:просто ArrayList.

Параметр type является просто инструкцией для компилятора, чтобы проверить тип добавляемого - только во время компиляции - и автоматически привести значения, полученные из списка.

0 голосов
/ 16 февраля 2019
//Any array that extends T
public static  <T extends Proxy> List<T>  process(T proxy)
{
    return new ArrayList<T>(); //just for example
}

//Returns array that has T type of parameter
public static  <T> List<T>  process(T proxy)
{
    return new ArrayList<T>(); //just for example
}

//Returns a map of generic type which you define in the method
public static <T, E extends Proxy> Map<T, E>  process(T key, E value)
{
    Map<T, E> map =  new HashMap<T, E>();
    map.put(key, value);
    return map;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...