В настоящее время я пишу библиотеку, в которой пользователи могут создавать собственные подклассы родительского абстрактного класса Module
. Так библиотека уже содержит некоторые модули, написанные мной, например ModuleOne
, ModuleTwo
, ...Создание объекта из класса
Каждый Module
- подкласс должен быть легко идентифицировать с уникальным идентификатором, например, целое число, потому что я хочу сохранить несколько модулей конфигураций и соединений в XML-файле. Поэтому я могу загрузить сохраненные конфигурации позже и создать объекты требуемого типа.
Если я просто использовать предопределенные классы, это легко, потому что я знаю идентификаторы ModuleOne
или ModuleTwo
, так что я могу создавать модули в функции:
public static Module getModuleByType(int type)
{
if (type == ModuleOne.TYPE)
return new ModuleOne();
else if (type == ModuleTwo.TYPE)
return new ModuleTwo();
//and so on...
}
Но если пользователь делает подкласс Module
, например CustomModule
, как я могу назначить уникальные идентификаторы этому классу, чтобы все экземпляры этого класса имели одинаковый идентификатор типа?
Как я могу динамически воссоздать эти модули из своих идентификаторов? Поэтому я не могу создать модули в getModuleByType()
, потому что я не знаю их конструктора и их идентификатора.
Благодарим за помощь.
Если вы не знаете их конструкторы, вы никогда не сможете их создать, потому что вы не знаете, что означают параметры их конструкторов. – m0skit0
Похоже, вы воссоздаете Spring IOC. –