Java 按字符串调用引用

Java 按字符串调用引用,java,reference,Java,Reference,在我的代码中,我有一个HPContentModule: @Resource(name = "HPContentModule") private HPContentModule hpContentModule; 我想知道是否有可能得到一个字符串: String myString = "hpContentModule"; 这样我就可以使用myString调用hpContentModule,执行类似于myString.init()的操作,其中init()是HPContentMethod中的方法 或

在我的代码中,我有一个HPContentModule:

@Resource(name = "HPContentModule")
private HPContentModule hpContentModule;
我想知道是否有可能得到一个
字符串

String myString = "hpContentModule";
这样我就可以使用
myString
调用
hpContentModule
,执行类似于
myString.init()的操作
,其中
init()
HPContentMethod
中的方法

或者

如果我有豆子:

<beans:bean id="myBean" class="com.app.search.HPContent" />


我可以在控制器中通过
String
调用这个bean吗?

有很多方法可以做到这一点

其中最简单的一个是Spring的
ApplicationContext
。您可以访问
ApplicationContext
。一旦有了
ApplicationContext
的副本,就可以调用
getBean()
方法,如下所示:

HPContentModule hpContentModule = (HPContentModule) appContext.getBean( "myBean" );

我怀疑这取决于您的DI/IOC框架。您使用的是哪一个?您应该能够调用提供资源注释的任何容器来按名称查找资源,然后将myString作为参数传递(如果这是您所要求的),尽管这会破坏注入的目的。在注入值之后,您应该能够使用反射。我正在使用Spring并尝试动态加载模块。是什么阻止您获取bean上下文并基于字符串访问/转换bean?有趣的是,我最近发现的一件事是,您可以动态地分配
值。我的意思是,您可以加载一个资源文件,该文件提供您感兴趣加载的bean的名称(例如,
)。