克里斯湯普森的答案是關鍵。不過,我很困惑你的代碼示例。
這將動態加載類:
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