首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java运行时类生成框架

java运行时类生成框架
EN

Stack Overflow用户
提问于 2014-06-02 17:06:58
回答 1查看 880关注 0票数 3

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

示例:

我有如下接口:

代码语言:javascript
复制
public interface Extractor<E> {
  public Object getProperty(E aSourceObject);
}

和一个bean类(或接口)

代码语言:javascript
复制
public class Foo {
  public int getProperty1();
  public String getProperty2();
  public boolean getProperty3();
}

我需要为Foo的每个属性提供一个Extractor接口的实现。类似于Java8的Foo::getProperty1

代码语言:javascript
复制
public class Foo1Extractor implements Extractor<Foo> {
  public Object getProperty(Foo anObject) {
    return anObject.getProperty1();
  }
}

我应该使用JavaCompiler (目前我需要实现的接口很少,可以使用模板类),还是您有更好的解决方案?

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

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

EN

回答 1

Stack Overflow用户

发布于 2014-06-22 06:57:29

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

无论如何,对于JDK7中编译时的代码生成,您可以使用the annotation processing API,它基本上是一个用于javac的插件API,您可以将其与某种模板引擎相结合。看一看this项目,它使用注释处理的能力来做非常好的事情。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23990895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档