我希望将Java 8的一个功能引入到Java 7中:针对方法的自动接口实现生成(以避免反射调用导致的性能缺陷)。我知道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兼容性(可用于商业产品)。
如果可能,请为我的情况提供一个小例子。