0

我对 java“Class”API 的性能有疑问。我有一个要求,我有可能像/car/cars[0]/make. 对于这些数据库值中的每一个,我必须查看我正在处理的特定类是否具有/car类似setCar(或方法)/cars[0]/make的setter 方法setCars。目前,我只是遍历类的所有声明的方法(使用getMethods),然后进行一些字符串检查以查看使用的方法名称是否与数据库值匹配。当我这样做时,我不会调用任何方法。虽然,这是使用MethodAPI,但实际上并没有进行任何方法调用。就java反射而言,这仍然是一个繁重的操作吗?套用这一点,这是在使用 Java 反射吗?

4

2 回答 2

0

是的,您正在通过调用 getMethods 使用反射。如果您担心性能,您可以使用JIP 之类的 java 分析器来分析您的代码

于 2012-11-13T19:37:57.847 回答
0

是的,java 反射用于查找声明的方法,并且查找已经是一项昂贵的操作,而无需事后调用该方法。

但是 OpenJDK(java 的默认实现)使用内部缓存,因此后续查找同一类上声明的方法要快得多。

任何主要的对象映射框架(到数据库或 JSON)都使用反射,因此只要您的应用程序不处理亚毫秒反应时间内的高频交易,您应该可以在这里使用反射。

于 2021-10-20T08:30:08.143 回答