Как получить класс из переменной и создать новый объект этого класса

122
07 августа 2019, 10:40

Имеется запись вида: List list; В абстрактном классе. В наследниках через конструктор, я его инициализирую. list = new ArrayList(); или list = new LinkedList();

Далее по коду в абстрактном классе имеется создание новых объектов типа List, но будет это ArrayList или LinkedList будет зависеть от объекта list что в начале. Как это реализовать?

Как получить класс из объекта list и создать новый объект этого же класса.

Answer 1

Проверить все возможные варианты

if (list instanceof ArrayList) {
}
if (list instanceof LinkedList) {
}
Answer 2
List newList = null;
try {
   newList = list.getClass().newInstance();
} catch (InstantiationException e) {
   e.printStackTrace();
} catch (IllegalAccessException e) {
   e.printStackTrace();
}
Answer 3

Как вариант, можно сделать так:

public static boolean is(final Object object, final Class clas) {
    return object.getClass().getSimpleName().equals(clas.getSimpleName());
}
List o = new LinkedList();
System.out.println(is(o, ArrayList.class)); //false
READ ALSO
Как связать бэкэнд и фронтэнд через nginx

Как связать бэкэнд и фронтэнд через nginx

написал учебное приложение: бэк на java(Spring boot), а фронт на angularjsСейчас пытаюсь запустить приложение, томкэт запускается на порту 8080

121
Перестал работать android studio emulator - “Устройство, подключенное к системе, не работает”

Перестал работать android studio emulator - “Устройство, подключенное к системе, не работает”

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

139
RecyclerView отображает данные через раз

RecyclerView отображает данные через раз

После обновления версии библиотек в buildgradle RecyclerView на api lvl 24+ отображает данные через раз, но на api lvl <24 всё работает стабильно

102