gpt4 book ai didi

java 运行时类生成框架

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:24:24 28 4
gpt4 key购买 nike

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

例子:

我有以下界面:

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

还有一个bean类(或接口(interface))

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

我需要为 Foo 的每个属性实现 Extractor 接口(interface)。类似于 Java 8 的 Foo::getProperty1

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

我应该使用 JavaCompiler(目前我有几个接口(interface)要实现并且可以使用模板类)还是你有更好的解决方案?

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

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

最佳答案

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

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

关于java 运行时类生成框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23990895/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com