Крис Томпсон ответил на вопрос.Однако я смущен вашим примером кода.
это будет динамически загружать класс:
Class mDefinition = Class.forName("MySpecialClassString");
Это получит Contructor
для вашего класса, который принимает экземпляр того же самогокласс в качестве аргумента.Также обратите внимание, что вы получаете доступ к классу во время компиляции с помощью MySpecialClass.class
:
Constructor mConstructor = mDefinition.getConstructor(new Class[]{MySpecialClass.class});
Это создает экземпляр MySpecialClass
, передав this
в конструктор:
myClass = (MySpecialClass) mConstructor.newInstance(this);
Исходя из аргумента конструктора, означает ли это, что мы находимся в методе экземпляра MySpecialClass
?Очень запутанный.
РЕДАКТИРОВАТЬ: Это ближе к тому, что я ожидал увидеть:
Class<?> mDefinition = Class.forName("MySpecialClassString");
//constructor apparently takes this as argument
Class<?> constructorArgType = this.getClass(); //could be ThisClassName.class
Constructor<?> mConstructor = mDefinition.getConstructor(constructorArgType);
MySpecialInterface mySpecialInstance = (MySpecialInterface)mConstructor.newInstance(this);
, где MySpecialInterface
- интерфейс, используемый для взаимодействия с вашимдинамически загружаемые классы:
interface MySpecialInterface {
//methods used to interface with dynamically loaded classes
}
В любом случае, пожалуйста, дайте мне знать, если я здесь недопонимаю или не в курсе.