クリス・トンプソンの答えはマークです。しかし、私はあなたのコード例に混乱しています。
これは、動的にクラスをロードします:
Class mDefinition = Class.forName("MySpecialClassString");
これは、引数としてその同じクラスのインスタンスを受け取り、あなたのクラスのためのContructor
を取得します。また、あなたがMySpecialClass.class
とコンパイル時にクラスにアクセスしていることに注意してください:これはコンストラクタにthis
を渡すことによってMySpecialClass
をインスタンス化され
Constructor mConstructor = mDefinition.getConstructor(new Class[]{MySpecialClass.class});
:コンストラクタの引数に基づいて
myClass = (MySpecialClass) mConstructor.newInstance(this);
、その平均値を行います私たちはMySpecialClass
のインスタンスメソッドにありますか?非常に混乱。
EDIT:これは私が見に期待したものに近いです:MySpecialInterface
あなた動的にロードされたクラスとやり取りするためのインタフェースである
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);
:とにかく
interface MySpecialInterface {
//methods used to interface with dynamically loaded classes
}
をしてください私が誤解しているか、ここでベースを外しているかどうか、私に知らせてください。
です。これらの最後のカップルで本当に役に立つと証明されました。 – Frankie