使用Reflection而不会出现性能问题

时间:2014-04-25 08:35:22

标签: java reflection

我使用java 1.5。我将创建一个公共函数,它接受2个对象(源类和目标类),它们调用所有getter并从源对象获取所有值,并调用目标对象的setter。我的目的是从源对象获取所有值并将这些值设置为目标对象。两类解析对象都不同,但所有封装彼此相等(变量,getter和setter方法类似)。

这里我要使用反射,然后调用getter和setter。据我所知,使用反射会产生性能和内存问题。有没有办法只用java而没有任何其他第三方罐子?任何实现,方法来做到这一点?任何来源,样本代码都受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

我真的选择了仪器(或其他类型的代码生成工具)。正如仪器所做的那样,生成的字节代码的行为就像handewritten代码性能一样明智。但是,您应该意识到这种努力比直接使用反射要高得多。你看不到它,你无法调试它。这就是为什么源代码生成是一个真正的替代品,但它也是字节!您需要构建过程的支持。 IDE的一些支持也会很好。

无论您的解决方案是什么,请仔细考虑是否可能无法避免复制数据。我的意思是,两个数据结构有多么有价值,有类似的,自动复制是可能的吗?在这里投入3到4个月的努力真的值得吗?