[英]Is using Class.getMethods() a heavy operation in Java?
我有一個關於 java “Class” API 性能的問題。 我有一個要求,我有數據庫值,可以像/car
或/cars[0]/make
。 對於這些數據庫值中的每一個,我必須查看我正在處理的特定類是否具有像setCar
這樣的/car
(或/cars[0]/make
setCars
方法)的setCars
方法。 目前,我只是遍歷類的所有聲明方法(使用getMethods
),然后進行一些字符串檢查以查看使用的方法名稱是否與數據庫值匹配。 當我這樣做時,我不調用任何方法。 盡管這是使用Method
API,但它實際上並沒有執行任何方法調用。 就java反射而言,這仍然是一個繁重的操作嗎? 解釋一下,這個java反射是否在使用中?
是的,您正在通過調用getMethods使用反射。 如果您擔心性能,可以使用Java分析器(如JIP)來分析代碼
是的,java反射用於查找聲明的方法,並且查找已經是一個昂貴的操作,而無需隨后調用該方法。
然而,OpenJDK(Java 的默認實現)使用內部緩存,因此對同一類中聲明的方法的后續查找要快得多。
任何用於對象映射(到數據庫或 JSON)的主要框架都使用反射,因此只要您的應用程序不處理亞毫秒級響應時間的高頻交易,在這里使用反射應該沒問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.