簡體   English   中英

向Java類添加字段

[英]Adding a field to Java class

看看使用CGLib,ASM,BCEL(aspect)和Javassist在運行時向類中添加一個字段....

為了讓我的頭腦直白,看起來這些字節碼操縱器不會更新實際的類而是允許用戶只轉儲修改(就像使用CGLib和writeFile方法)。 希望我能找到一個解決方案,(a)加載類(而不是用BCEL做一個InputStream)和(b)更新類。

也許這是正常的? 人們通常會創建一個代理並傳遞代理嗎?

我想要做的是在將對象傳遞給查找具有特定注釋的字段(而不是屬性)的框架之前添加一個字段(注意:不是通過get / set方法的屬性)。 所以“客戶”正在創建我想要注入額外字段的目標類。 攔截AOP調用我想操縱這些對象的服務層。

您可以使用Intrumentation重新定義類。 但是,常見的限制是您無法更改使用的字段。 這是因為一旦創建了對象(或添加到對象),您就無法更改它的內容。

在你的情況下,你可以,

  • 按照您的建議創建代理,但代理需要是接口。
  • 創建一個具有附加字段的子類
  • 在加載類之前添加字段。

暫無
暫無

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

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