Pim*_*kos 0 java reflection classloader
我正在寻找类似于.NET托管扩展框架(http://mef.codeplex.com/)的Java功能。对于那些不了解MEF的人,我想要这样的东西:
给定接口
public interface IFoo {
...
}
Run Code Online (Sandbox Code Playgroud)
通过查看已加载的jar,动态加载接口的实现。
IFoo foo = loadClassThatImplementsInterface<IFoo>();
Run Code Online (Sandbox Code Playgroud)
关键是程序员在代码时不知道实现的名称,但在代码中提供了扩展点。
在Java中根本不可能吗?我发现一些Google命中说这是不可能的,但这似乎有点...是吗?
当在编译时知道实现的完全限定名称时,有许多使用类加载器的示例。那不是我想要的。
在“纯” Java中,您可以使用ServiceLoader:http : //download.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html
您只需在扩展jar中提供元数据,该数据既智能又易于扩展。
或者寻找像Guice或Spring这样的DI框架...
| 归档时间: |
|
| 查看次数: |
2397 次 |
| 最近记录: |