自分のクラスローダーを使用して、場所からいくつかのクラスをロードしています。アプリケーションのユーザーは、この場所にjarファイルを追加できます。これらのjarファイルにあるすべてのクラスをロードします。これらのクラスのリテラルオブジェクトを特定のクラスのフィールドであるHashMapに保持し、必要に応じてインスタンスを作成します。このHashMapからいくつかのクラスリテラルが削除された場合、クラスを追加しているユーザーのためにクラスをアンロードする必要があるように、そのクラスリテラルのインスタンスを作成することができます。 2)私は、私が読み込んだすべてのクラスリテラルを持っているhashMApで操作するコードをユーザが使用しないようにしたい。Java Reflection
1
A
答えて
0
私は反射との適切な経験を持っていなかったが、私はことをお勧めすることは以下の通りです:
は、インスタンス化のすべてのインスタンスのレコードを含むクラス(LoadedClassesManagerを、言う)を持ちます。また、観測可能なパターン(イベントリスナーに応答)を実装する必要があります。
ロードされたクラスのすべてのインスタンス化を、LoadedClassManagerのメソッド呼び出し(getNewInstance(Class clazz, params)
のようなもの)によって呼び出すようにする。このメソッドは、呼び出し元オブジェクトをリスナーとして登録します(クラスがアンロードされたとき)。
クラスがアンロードされるとき、イベントリスナーのevenハンドラは、クラスのアンロードを適切に処理するためにLoadedClassesManagerによって呼び出されます。
関連する問題
- 1. CompletableFuture&Java Reflection約束とJava Reflection
- 2. Java Reflection
- 3. Java Reflectionの例
- 4. Java Reflection、getMethod()
- 5. Java Reflection、Class Objects
- 6. scala reflection error java
- 7. Java Reflection Resources
- 8. Java Reflection - serviceCall
- 9. Java Reflection getConstructorメソッド
- 10. Java Reflection API
- 11. Java Reflection isArray()always false
- 12. Java reflection ClassNotFound例外
- 13. Maven Shade Plugin for Java reflection
- 14. Java Reflection:実装クラスを作成する
- 15. Java Reflectionは質問と同じです
- 16. Java Reflectionは悪い練習ですか?
- 17. Java Reflectionの受け渡しパラメータ
- 18. Java Reflectionクラスの型を持つgetDeclaredMethod()クラス
- 19. Reflection&WCF
- 20. scala reflection
- 21. Reflection API - ClassNotFound例外
- 22. Proguard with Reflection
- 23. Android enum reflection
- 24. C#Reflection - GetMethod
- 25. c#、Internal、Reflection
- 26. Swift 2 Reflection Error
- 27. Shader Reflection With DirectX11
- 28. .Net Reflection GetProperties()
- 29. Entity Framework - Reflection
- 30. Reflection - restore time.Time instance
返信用のThnx。 しかし、ここでは2つの懸念があります。 1)コードを使用してクラスをアンロードすることはできますか(メモリからアンロードするか、またはそれを非マークにするように設定することができます) 2)私のコードはすべてのユーザーに公開されているので、クラス内でLoadedClassManagerを使用することもできます彼らは私のアプリケーションに追加しています。私もこれを防止したいです。 – Chandan
あなたの最初の懸念についてここで答えを見てください:http://stackoverflow.com/questions/148681/unloading-classes-in-java – WaelJ
あなたの2番目のポイントとして、私はあなたが何を意味するのかよく分かりません。ユーザーのコードはソースコードを変更できるので、コードは開いていますか? – WaelJ