В Java я могу использовать объект класса для динамичного инстанцирования классов того типа?
т.е. Я хочу некоторую функцию как это.
Object foo(Class type) {
// return new object of type 'type'
}
Вы можете использовать Class.newInstance
:
Object foo(Class type)
throws InstantiationException, IllegalAccessException {
return type.newInstance();
}
... но это предполагает наличие конструктора с нулевым аргументом. Более надежный путь - использовать Class.getConstructor
или Class.getConstructors
, что приведет вас к использованию материала Reflection в java.lang.reflect
пакете.
Да, это называется «Отражение». вы можете использовать для этого метод Class newInstance ()
.
Использование:
type.newInstance()
Для создания экземпляра с помощью пустого конструктора, или используйте метод type.getConstructor(...), чтобы получить соответствующий конструктор и затем вызвать его.