2014-04-25 24 views
1

我使用java 1.5。我將創建一個通用函數,它需要2個調用所有getter的對象(源類和目標類),並從源對象和目標對象的調用setter中獲取所有值。我的意圖是從源對象獲取所有值並將這些值設置爲目標對象。這兩種解析對象類都不同,但所有封裝都相互平等(變量,getter和setter方法相似)。使用Reflection沒有性能問題

這裏我要使用反射,然後調用getters和setter。據我所知,使用反射會產生性能和內存問題。有沒有什麼辦法可以用沒有任何其他第三方jar的java來提出這個問題?任何實現,方法來做到這一點?任何來源,樣本代碼都非常感謝。

+1

注意:如果您只想使用getters/setters,請使用'Introspection'。它使用反射來顯示屬性和讀/寫方法。 –

+0

@ArnaudDenoyelle。我感謝你的快速反應。請讓我知道任何表現或內存問題會因爲自省而發生? –

+4

您是否嘗試過使用反射並觀察這些問題,或者您只是猜測它會對您造成問題? – Keppil

回答

1

我真的想用儀器(或其他類型的代碼生成工具)。正如儀器所做的一樣,生成的字節碼的行爲就像性能明智的手寫代碼一樣。但是,您應該意識到,這種努力遠遠高於直接使用反射。你看不到它,你不能調試它。這就是爲什麼源代碼生成是一個真正的選擇,但它也是字節!您需要構建過程的支持。 IDE的一些支持也會很好。

無論您的解決方案是什麼,請仔細考慮是否可能不會避免複製數據。我的意思是,兩個數據結構有多相似,可以自動複製嗎?在這裏投入3到4個月的努力真的值得嗎?