克里斯汤普森的答案是关键。不过,我很困惑你的代码示例。
这将动态加载类:
Class mDefinition = Class.forName("MySpecialClassString");
这将让一个Contructor
为类,这会占用同一类的实例作为参数。另外请注意,你与MySpecialClass.class
访问类在编译时:
Constructor mConstructor = mDefinition.getConstructor(new Class[]{MySpecialClass.class});
这是通过this
到构造函数实例化一个MySpecialClass
:
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
}
无论如何请让我知道,如果我误解或基地在这里。
thks的相当详细的说明和额外的文件。在过去的几天里证明是有用的。 – Frankie