2015-03-29 2 views
1

В Java я пытаюсь создать экземпляр класса, который передается как параметр. Например:Создание экземпляра класса в 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

Вы можете посмотреть на заводе шаблон проектирования. –

ответ

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! – thatsimplekid

Смежные вопросы