Общий тип как параметр в методе Java - PullRequest
21 голосов
/ 20 июля 2011

Как вы думаете, возможно ли создать нечто подобное?

private ArrayList increaseSizeArray(ArrayList array_test, GenericClass) {
    array_test.add(new GenericObject()); // instance of GenericClass
    return array_test;
}

Ответы [ 3 ]

53 голосов
/ 20 июля 2011

Да, вы можете.

private static <T> List<T> pushBack(List<T> list, Class<T> typeKey) throws Exception {
    list.add(typeKey.getConstructor().newInstance());
    return list;
}

Пример использования:

List<String> strings = new ArrayList<String>();
pushBack(strings, String.class);
3 голосов
/ 01 апреля 2018

Старый вопрос, но я бы предположил, что это предпочтительный способ сделать это в java8 +

public <T> ArrayList<T> dynamicAdd(ArrayList<T> list, Supplier<T> supplier) {
  list.add(supplier.get());
  return list;
}

, и его можно использовать так:

AtomicInteger counter = ...;
ArrayList<Integer> list = ...;

dynamicAdd(list, counter::incrementAndGet);

это добавит числок списку, получая значение из incrementAndGet метода AtomicInteger

Также возможно использовать конструкторы в качестве ссылок на методы, как это: MyType::new

1 голос
/ 14 июня 2016

простое решение!

private <GenericType> ArrayList increaseSizeArray(ArrayList array_test, GenericType genericObject)
{
    array_test.add(new genericObject());
    return ArrayList;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...