克里斯·汤普森的回答很到位。但是我对你的代码示例感到困惑。
这将动态加载类:
Class mDefinition = Class.forName("MySpecialClassString")
您可以使用以下代码获取一个Constructor
,该构造函数需要该类的实例作为参数。请注意,您在编译时访问该类: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()
Constructor<?> mConstructor = mDefinition.getConstructor(constructorArgType)
MySpecialInterface mySpecialInstance = (MySpecialInterface)mConstructor.newInstance(this)
其中MySpecialInterface
是用于与您的动态加载类进行交互的接口:
interface MySpecialInterface {
}
无论如何,请让我知道如果我误解或离题了。