Java 反射机制

Java 反射机制,java,reflection,Java,Reflection,我正在从一个位置加载一些类(使用我自己的类加载器),我的应用程序用户可以将他们的jar文件添加到此位置,我将加载这些jar文件中存在的所有类。这就像某些特定类型的运行时插件类。然后我将这些类文本对象保存在HashMap(特定类的字段)中如果从这个HashMap中删除了某个类文本,那么就没有人能够创建该类文本的实例,就像为正在添加类的用户卸载该类一样。 2) 我还希望我的用户不应该使用任何带有我加载的所有类文本的hashMAp进行操作的代码。我还没有适当的反射经验,但我建议如下: 让一个类(比如L

我正在从一个位置加载一些类(使用我自己的类加载器),我的应用程序用户可以将他们的jar文件添加到此位置,我将加载这些jar文件中存在的所有类。这就像某些特定类型的运行时插件类。然后我将这些类文本对象保存在HashMap(特定类的字段)中如果从这个HashMap中删除了某个类文本,那么就没有人能够创建该类文本的实例,就像为正在添加类的用户卸载该类一样。
2) 我还希望我的用户不应该使用任何带有我加载的所有类文本的hashMAp进行操作的代码。

我还没有适当的反射经验,但我建议如下:

让一个类(比如LoadedClassesManager)包含实例化的所有实例的记录。它还应该实现可观察模式(即响应事件侦听器)

在LoadedClassManager(类似于
getNewInstance(Class clazz,params)
)中通过方法调用调用所有已加载类的实例化。该方法还将调用对象注册为侦听器(用于卸载类时)


因此,当要卸载某个类时,LoadedClassesManager将调用事件侦听器的偶数处理程序来适当地处理该类的卸载。

Thnx以获取回复。但是,我有两个顾虑。1) 是否可以使用代码卸载类(从内存卸载,或者我只能设置一些字段来标记它UnloadActe)2)由于我的代码对我的所有用户开放,因此他们也可以在他们添加到我的应用程序的类中使用我的LoadedClassManager。我也希望防止这种情况。请参阅此处关于您第一个问题的答案:关于第二点,我不太清楚您的意思。您的代码是开放的,因为您的用户可以修改源代码吗?