我想知道是否有可能,使用反射或類似的東西來調用一個方法,每當一個變量在讀取或寫入模式下訪問。簡而言之,我的目標與C#屬性的行爲類似。Java +反射:調用變量訪問方法。可能嗎?
例子:比方說,我有兩個類A和B ...
public class A{
public int field;
public void foo(){ System.out.println("Field modified");}
}
public class B{
public void bar(A a){
a.field = 1;
}
}
...我想執行每當a.field寫入方法A.foo()。
這是可以在Java中實現嗎?
在此先感謝
p.s.我知道好的編程習慣建議使用getter和setter。我只需要知道我想做什麼是可行的。
交流
C#屬性是getter和setter的語法糖。 – 2010-10-22 16:09:47
我知道它們是句法糖,但考慮一下你需要測試/調試別人編寫的代碼的場景,並且想要跟蹤變量的訪問方式。在C#中,您可以解決將類的變量轉換爲屬性的問題,並保持代碼的其餘部分不變。編譯器會處理所有內容 – Jack 2010-10-22 16:29:46
如果您正在測試某人的代碼,您可以獲取源代碼的副本並對其進行修改。或者首先反編譯代碼。 – 2010-10-22 17:35:58