我有一些類A
沒有源代碼和這個類使用了一些類B
2層的方法,如#get(): int
和標準的Java庫設置#set(int value): void
!替代方法沒有源代碼
我可以替代這2種方法或所有類改變A
這個類的一些功能?
例如,此類A
使用標準類B
來保存一些信息,但我希望使用此另一個容器進行某些操作。有可能嗎?
我有一些類A
沒有源代碼和這個類使用了一些類B
2層的方法,如#get(): int
和標準的Java庫設置#set(int value): void
!替代方法沒有源代碼
我可以替代這2種方法或所有類改變A
這個類的一些功能?
例如,此類A
使用標準類B
來保存一些信息,但我希望使用此另一個容器進行某些操作。有可能嗎?
你可以使用一些字節碼操作庫,例如java-bytecode-asm。然而一個更簡單的方法是使用aspectj和編織類,無論是靜態或動態。 AspectJ的甚至可以編織標準的Java庫(rt.jar
)。
感謝您的信息!也許你有一些例子如何使用'AspectJ'來替換方法? – dzav 2012-04-13 21:03:51
@vanveber:沒有例子,但很少的提示:搜索*圍繞建議* - 不調用包裝的方法。 – 2012-04-13 21:08:14
我不確定,但我相信你想要做的是 擴展類,然後重寫該方法。
正如柯克沃爾說,這看起來並不像Java。
這些方法的簽名不是Java。 – 2012-04-13 19:45:46