Структура обобщенного метода, принимающего типы разных классов

Интересует способ реализации обобщенного метода, который сможет принимать одно из значений:

1) Либо объекты типа T, ограниченные сверху классом Number:

T extends Number

2) Либо объекты типа String

Например:

public void getValue(List<T extends Number>, List<String>){
    // тут выполняется, например, сортировка полученного List'a
}

Что я предпринимал:

  • Прочитал главу Обобщения книги Java - Полное руководство, Герберт Шилдт
  • Гуглил
  • Посмотрел здесь предлагаемые топики при написании заголовка к данному топику

    public static void append(List list) { T elem = new T(); list.add(elem); }

Что я нашёл:

  • То, что в обобщенном методе можно реализовать способ, когда в качестве аргументов метода может быть два значения (в данном случае классы-наследники от Number и String), но чтобы метод смог принимать или T extends Number или String - я не смог найти. Поэтому интересуюсь.

Ответы (1 шт):

Автор решения: Nick Volynkin

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

public void getValue(List<T extends Number>){
    // 
}


public void getValue(List<T extends String>){
    //
}

Ну и если метод называется get, то он не void, а например T. Тогда хоть дженерики обретают смысл.

public Т getValue(List<T extends Number>){
    // 
}


public Т getValue(List<T extends String>){
    //
}
→ Ссылка