Java运行时类生成框架



我希望Java 7具有Java 8的一个特性:方法的自动接口实现生成(以避免由于反射调用而导致的性能不足)。我知道Java 8在编译时提供了生成,但我认为Java 7不可能(不维护元数据文件)。所以我同意在运行时生成实现。

的例子:

我有以下接口:

public interface Extractor<E> {
  public Object getProperty(E aSourceObject);
}

和bean类(或接口)

public class Foo {
  public int getProperty1();
  public String getProperty2();
  public boolean getProperty3();
}

我需要为Foo的每个属性实现一个Extractor接口。例如Java 8的Foo::getProperty1

public class Foo1Extractor implements Extractor<Foo> {
  public Object getProperty(Foo anObject) {
    return anObject.getProperty1();
  }
}

我应该使用JavaCompiler(目前我有几个接口来实现,可以与模板类一起工作)还是你有更好的解决方案?

主要要求是短字节码生成时间和LGPL兼容性(可用于商业产品)。

如果可能的话,为我的案例提供一个小示例。

如果用生成的类替换反射,可能看不到明显的性能改进,除非应用程序每秒执行数百万个操作。此外,将动态代码生成添加到项目(在运行时和编译时)的复杂性也相当高。因此,我建议只有在证明反射是真正的瓶颈时才使用它。

无论如何,对于JDK 7编译时的代码生成,你可以使用注释处理API,它基本上是javac的插件API,你可以将它与某种模板引擎结合起来。看一下这个项目,它使用注释处理的功能来完成相当不错的工作。

相关内容

  • 没有找到相关文章

最新更新