내 클래스 로더를 사용하여 위치에서 일부 클래스를로드하는 중입니다. 응용 프로그램 사용자가이 위치에 jar 파일을 추가 할 수 있으며 해당 jar 파일에있는 모든 클래스를로드합니다. 런타임 플러그인과 같습니다. 특정 타입의 클래스. 그런 다음이 클래스 리터럴 객체를 HashMap (특정 클래스의 필드)에 유지하고 필요할 때마다 인스턴스를 만듭니다. 일부 클래스 리터럴이이 HashMap에서 제거되면 아무도 없어야합니다 해당 클래스 리터럴의 인스턴스를 만들 수 있습니다. 클래스를 추가하는 사용자가 클래스를 언로드해야합니다. 2) 또한 사용자가 내가로드 한 모든 클래스 리터럴을 담고있는 hashMAp로 조작하는 코드를 사용해서는 안된다.Java Reflection
1
A
답변
0
나는 반사와 적절한 경험을했다,하지만 내가 제안하면 다음과 같다되지 않은 :
이 (LoadedClassesManager 말)는 클래스가 인스턴스화 모든 인스턴스의 기록을 포함. 또한 관찰 가능한 패턴을 구현해야합니다 (즉, 이벤트 리스너에 응답).로드 된 클래스의 인스턴스화를 모두 LoadedClassManager의 메소드 호출 (예 : getNewInstance(Class clazz, params)
)로 호출하도록합니다. 이 메소드는 호출 객체를 리스너 (클래스가 언로드 될 때)로 등록합니다.
그래서 어떤 클래스가 언로드 될 때 이벤트 리스너의 짝수 핸들러는 클래스의 언로드를 적절히 처리하기 위해 LoadedClassesManager에 의해 호출됩니다.
관련 문제
- 1. Java Reflection Utility
- 2. Java reflection 적합성
- 3. Unboxing and Reflection in Java?
- 4. Java reflection 및 manifest 파일이
- 5. Java Reflection : 주석이있는 메소드 수?
- 6. Java Reflection 클래스 유형을 사용하는 getDeclaredMethod()
- 7. Java reflection (및 어노테이션) : bean.class가 비어 있습니다.
- 8. Java reflection : 익명 내부 클래스를 검색하려면 어떻게해야합니까?
- 9. Java reflection : 내 컬렉션에는 무엇이 들어 있습니까?
- 10. Java Reflection : java.lang.reflect.Field.getDouble (object)의 내부
- 11. Java Reflection Call을 확인하는 올바른 방법은 무엇입니까?
- 12. Java Reflection - 다차원 플로트 배열 클래스
- 13. Java reflection : Method.getGenericXXXXX 메소드는 어떻게 작동합니까?
- 14. Java 코드 생성 (Metaprogramming, Reflection, wtv)
- 15. FileOutputStream Reflection
- 16. bash "reflection"
- 17. Reflection PropertyInfo.GetValue
- 18. Java reflection : 클래스 배열과 매개 변수 유형 배열
- 19. Java reflection generics - 컴파일 타임에 매개 변수를 전달하여 캐스트?
- 20. Reflection & Application Design
- 21. AS3 (Pixelfumes Reflection Class)
- 22. C# Reflection Tree
- 23. C# enums/reflection
- 24. MSTEST/VSTS Reflection Tool
- 25. Fluent NHibernate reflection mappings
- 26. C# Reflection Performence 도움말
- 27. reflection + 생성자에 대한 도움말
- 28. ComponentModel 및 Reflection 정보
- 29. C# Reflection Utility
- 30. Invoke Func from Reflection
답변을위한 Thnx입니다. 하지만 여기에는 두 가지 문제가 있습니다. 1) 코드를 사용하여 클래스를 언로드 할 수 있습니까? (메모리에서 언로드하거나 일부 필드에만 코드를 설정해야합니다.) 2) 코드가 모든 사용자에게 공개되어 있으므로 클래스에서 내 LoadedClassManager를 사용할 수도 있습니다. 그들은 내 응용 프로그램에 추가하고 있습니다. 나는 이것을 방지하고 싶습니다. – Chandan
첫 번째 문제는 여기에 대한 답변을 참조하십시오 : http://stackoverflow.com/questions/148681/unloading-classes-in-java – WaelJ
두 번째 요점에 대해서는, 내가 무슨 뜻인지 잘 모르겠습니다. 사용자 코드는 소스 코드를 수정할 수 있으므로 열려 있습니다. – WaelJ