簡體   English   中英

反射或運行時類聲明?

[英]reflection or runtime class declaring?

好吧,我有一個簡單的問題。

我們正在使用簡單的應用程序服務器(例如),並且該服務器在運行時接受客戶端業務,而無需重新啟動服務器。

當用戶實現它的業務並將其部署到服務器時,服務器只需嘗試找出存檔描述符,然后加載模塊,即可正常工作。

一些操作需要大量的反射調用,並且對於每個調用,它們都會反復調用。 例如,有一種方法可以接受任何對象,然后搜索某個已通過注釋簽名的特定字段並對其進行處理,因此,如果我們對一個相同的對象調用此方法1000次,這將反映1000次。

我的問題是,效率高嗎? 我的意思是它不占用CPU嗎?! 我在想的唯一可能的解決方案是創建一個類並為每個對象(可能是包裝器)進行編譯,然后該方法將找出包裝器類。 但是我知道這可能會使系統變得復雜,並且難以調試。

當前的解決方案是可行的,但是我認為完成1000次工作是不合邏輯的,即使它很簡單也很容易。

提前致謝。

本質上,使用反射在運行時動態加載類並不是一個壞選擇。 根據您的描述,您應該提供一個可擴展的框架,該框架允許您的客戶進行實施,並基於該框架運行其業務邏輯,而不是一些隱含的運行時注釋魔術。

Servlet API就是一個很好的現實世界例子。

例如,有一種方法可以接受任何對象,然后搜索某個已通過注釋簽名的特定字段並對其進行處理,因此,如果我們對一個相同的對象調用此方法1000次,這將反映1000次。

在這種情況下,建議您使用緩存。 反射完成后,您將知道類名稱和字段名稱。 將它們存儲在具有Class類型鍵和Method作為值的HashMap 下次調用“方法”時,將首先檢查緩存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM