我有一個我想替換的類型列表,用於日誌記錄目的,但不更改我的代碼(日誌記錄部分它只是用於esporadically)。我正在尋找一種簡單的方法來爲我的類字段創建某種代理,以便在運行時知道我的類字段何時更改,或者當我沒有類源代碼(例如LinkedList)時,當調用類方法時。在編譯/運行時替換Java類型
舉個例子,如果我有這樣的代碼,這是屬於我的一類,我只是需要被警告MyClass的現場狀態的變化:
public class MyClass {
private LinkedList<Integer> myList;
private int myInteger;
public void myMethod()
{
myInteger = 15;
myList = new LinkedList<Integer>();
}
public void myOtherMethod()
{
myList.add(1);
}
public LinkedList<Integer> getMyList() {
return myList;
}
}
我需要知道,在運行時(但代碼修改可以在編譯時完成),每當有人更改myInteger
的值時,將元素添加到myList
並將myList
更改爲LinkedList
。我覺得解決不應完全用代碼分析完成,因爲列表的引用可通過參數到處傳遞給,像getMyList()
在這種情況下,記錄它只是場,wheter他們是原始的或對象。對於沒有代碼的類型(如LinkedList),如果在調用某個方法或讀取或寫入任何公共字段時收到通知,我會很高興。
你的問題是什麼?我不清楚你試圖達到什麼目的,即使我懷疑它不值得讓編譯器爲你做。 –
對不起@PeterLawrey,我現在要改變它 – rnunes
我仍然沒有看到一個問題的'?'。目前還不清楚你爲什麼要做你的建議。一般認爲不好的做法是返回一個將被改變的集合。相反,不可變的副本可以返回以防止這種情況。 –