Создание ArrayList класса, определенного в переменной - PullRequest
0 голосов
/ 23 мая 2018

Предположим, у меня есть что-то вроде этого

Class klazz = Integer.class;

И я заинтересован в том, чтобы сделать что-то подобное

List<(klazz Class)> something = new ArrayList<>();

something.add(new Integer(..))
something.add(new Integer(..))
.. etc

Мне, вероятно, нужно использовать рефлексию, но, тем не менее, яне знаете, как его применить.

Можно ли обойтись без рефлексии?Если это не так, как бы вы сочли это подходящим для реализации?

Заранее спасибо

1 Ответ

0 голосов
/ 23 мая 2018

Я не могу полностью выполнить требование, но это может помочь:

public class Main {
    public static void main(String[] args) {
        ContainerWrapper<Integer> containerWrapper = new ContainerWrapper<>(Integer.class);
        containerWrapper.add(1);
        System.out.println(containerWrapper.containerType());
        System.out.println(containerWrapper.isInteger());
    }
}

class ContainerWrapper<T> {
    // Store type information here
    private Class<T> clazz;
    private List<T> list = new ArrayList<>();

    public ContainerWrapper(Class<T> clazz) {
        this.clazz = clazz;
    }

    public void add(T element) {
        list.add(element);
    }

    public Class<T> containerType() {
        return clazz;
    }

    public boolean isInteger() {
        return clazz.isAssignableFrom(Integer.class);
    }
}

Вы можете проверить T тип, используя clazz.isAssignableFrom(*.class)

Вывод:

class java.lang.Integer
true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...