Создание экземпляра класса в Java?

1

В Java я пытаюсь создать экземпляр класса, который передается как параметр. Например:

public Class<? extends superclass> theClass;

public constructor(Class<? extends superclass> myClass){
    this.theClass = myClass;
}

public superclass getInstance(){
    return < AN INSTANCE OF theClass >
}

Я не знаю, как создать экземпляр класса theClass... Возможно ли это, или мне нужно найти другой способ сделать это?

Буду признателен за любую оказанную помощь.

  • 0
    Возможно, вы захотите взглянуть на шаблон дизайна фабрики.
Теги:
class

2 ответа

2
Лучший ответ

Да, возможно:

return this.theClass.newInstance();

Подробнее в java.lang.Class и java.lang.reflect, включая способ поиска других конструкторов, которые может иметь класс, и способ их вызова с аргументами.

Например, предположим, вы знаете, что вам нужно вызвать конструктор, который принимает аргумент String. Вы можете использовать getConstructor для поиска этого конструктора:

Constructor ctor = this.theClass.getConstructor(String.class);

... и затем назовите его

return ctor.newInstance("the string");
2

Вы можете вызвать Class#newInstance():

public Superclass getInstance() throws InstantiationException, IllegalAccessException {
    return theClass.newInstance();
}

Из Javadocs:

Создает новый экземпляр класса, представленного этим объектом Class. Класс создается таким образом, как будто new выражением с пустым списком аргументов. Класс инициализируется, если он еще не был инициализирован.

  • 0
    Как раз то, что мне было нужно! Спасибо, что включили информацию Javadocs тоже!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню