ロギングの目的で、コードを変更せずに置き換えたいタイプのリストがあります(ロギングの部分は散発的に使用するだけです)。実行時にクラスフィールドが変更されたとき、またはクラスのソースコード(LinkedListなど)がないときを知るために、クラスフィールドのプロキシを簡単に作成する方法を探しています。クラスメソッドが呼び出されたとき。
例として、自分に属するクラスであるこのコードがあり、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()
この場合、ログは、フィールドがプリミティブであるかオブジェクトであるかに関係なく、フィールド専用です。コードがないタイプ(LinkedListなど)の場合、メソッドが呼び出されたとき、またはメソッドが読み取られたり書き込まれたりするパブリックフィールドが通知されたら、喜んでいます。