2014-11-24 4 views
0

У меня есть следующие иерархии классов:Как передать параметр класса в качестве параметра?

Супер Класс и подклассы:

public class SuperClass(){ 

// attributes and accessors 


public class Class1() extends SuperClass { 

// attributes and accessors 
} 

public class Class2() extends SuperClass { 

// attributes and accessors 
} 

public class Class3() extends SuperClass { 

// attributes and accessors 
} 

У меня есть также метод в другом классе, чтобы создать подклассы:

SuperClass createMySubclass(){ 

} 

Я интересно, как я могу передать в этом параметре метода класс, который я хочу создать и создать его экземпляр? Я не знаю, как это сделать:

Я хотел бы сделать что-то вроде:

SuperClass createMySubclass(Class myClass){ 

     SuperClass type = new myClass.getConstructor(); 

    } 

возможно ли это?

+0

Да - К сожалению, вопросы, которые просят за одно слово ответа являются не очень хорошо вопросов. –

+0

Кроме того, на объектах класса не существует метода 'getConstructor()'. Вы можете получить список конструкторов, или вы можете найти точный, предоставив полную подпись. –

+0

Конечно. Когда вы вызываете метод, вы передадите реальное значение, и параметр метода будет разрешен. Кроме того, 'getConstructor()' не требуется. –

ответ

0

Учитывая ваш сценарий, поскольку каждый класс, принадлежащий SuperClass, может иметь метод с SuperClass в качестве параметра и может получать любой из его подклассов.

Пример:

SuperClass createMySubclass(SuperClass myClass){ 

     SuperClass type = myClass; 

    } 

и где-то в вашей основной, вы должны иметь что-то вроде этого:

Class1 mySubClass = new Class1(); 
SuperClass mySuperClass = new SuperClass(); 
mySuperClass.createMySubClass(mySubClass);