Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 性能_Java_Performance_Reflection_Apache Commons - Fatal编程技术网

Java 性能

Java 性能,java,performance,reflection,apache-commons,Java,Performance,Reflection,Apache Commons,我遇到了一个问题,我需要遍历一个对象图并选择一个特定的属性值。我的原始解决方案缓存了需要应用的属性名称的链接列表,以便在对象图中从点a到点B。然后,我使用ApacheCommons遍历调用getProperty(对象bean,字符串名)的链表,直到到达点B 我的问题是,与可能为每个步骤保存方法对象相比,这将如何执行。地产公司在引擎盖下做什么?它是否进行了大量的反射/繁重的工作?您不需要手动横切图形,因为commons beanutils的新版本还支持bean1.prop1.prop2之类的表达式

我遇到了一个问题,我需要遍历一个对象图并选择一个特定的属性值。我的原始解决方案缓存了需要应用的属性名称的链接列表,以便在对象图中从点a到点B。然后,我使用ApacheCommons遍历调用getProperty(对象bean,字符串名)的链表,直到到达点B


我的问题是,与可能为每个步骤保存方法对象相比,这将如何执行。地产公司在引擎盖下做什么?它是否进行了大量的反射/繁重的工作?

您不需要手动横切图形,因为commons beanutils的新版本还支持bean1.prop1.prop2之类的表达式

关于性能,如果每个表达式只执行一次,则propertyutils实现很好,因为一定程度的反射是绝对必要的

如果每个表达式都被多次调用,则可以进行更真实的性能改进。然后缓存要执行的最终方法可以改善结果,因为您只对表达式执行一次大反射


如果您多次使用该表达式,您可以查看支持“编译表达式”的OGNL。

我建议您实际阅读PropertyUtils代码,然后自己查看:)