[英]reflection or runtime class declaring?
好吧,我有一個簡單的問題。
我們正在使用簡單的應用程序服務器(例如),並且該服務器在運行時接受客戶端業務,而無需重新啟動服務器。
當用戶實現它的業務並將其部署到服務器時,服務器只需嘗試找出存檔描述符,然后加載模塊,即可正常工作。
一些操作需要大量的反射調用,並且對於每個調用,它們都會反復調用。 例如,有一種方法可以接受任何對象,然后搜索某個已通過注釋簽名的特定字段並對其進行處理,因此,如果我們對一個相同的對象調用此方法1000次,這將反映1000次。
我的問題是,效率高嗎? 我的意思是它不占用CPU嗎?! 我在想的唯一可能的解決方案是創建一個類並為每個對象(可能是包裝器)進行編譯,然后該方法將找出包裝器類。 但是我知道這可能會使系統變得復雜,並且難以調試。
當前的解決方案是可行的,但是我認為完成1000次工作是不合邏輯的,即使它很簡單也很容易。
提前致謝。
本質上,使用反射在運行時動態加載類並不是一個壞選擇。 根據您的描述,您應該提供一個可擴展的框架,該框架允許您的客戶進行實施,並基於該框架運行其業務邏輯,而不是一些隱含的運行時注釋魔術。
Servlet API就是一個很好的現實世界例子。
例如,有一種方法可以接受任何對象,然后搜索某個已通過注釋簽名的特定字段並對其進行處理,因此,如果我們對一個相同的對象調用此方法1000次,這將反映1000次。
在這種情況下,建議您使用緩存。 反射完成后,您將知道類名稱和字段名稱。 將它們存儲在具有Class
類型鍵和Method
作為值的HashMap
。 下次調用“方法”時,將首先檢查緩存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.