Jac*_*ack 1 java reflection properties
我想知道是否有可能,使用反射或类似的东西,只要在读取或写入模式下访问变量时调用方法.简而言之,我的目标与C#属性的行为类似.
示例:假设我有两个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;
}
}
Run Code Online (Sandbox Code Playgroud)
...并且每当写入a.field时我都想执行方法A.foo().
这在Java中是否可以实现?
提前致谢
ps我知道好的编程实践建议使用getter和setter.我只需要知道我想做什么是可行的.
AC
不通过反射 - 反射只是让您在运行时访问有关类/字段/等的静态信息.
面向方面编程更多的是你想到的 - 这使你可以在源代码的某些点注入少量代码(称为"建议")(例如在方法运行之前,设置字段时等) .这几乎肯定会让你做你想要的.
但是有一点警告 - 正如你似乎提到的那样,依靠方面来处理你的一般逻辑不太可能是一个好主意,因为它很难用它们来推理,并且确切地知道将会发生什么(根据定义,它们打破调用方法foo()的默认心理模型意味着控件直接传递给该方法).AOP 非常适合记录或调试等功能,因为它可以让您编写一些代码,这些代码可以轻松地影响许多横切关注点,并且不需要您修改底层应用程序的代码.您的建议可以根据需要进行编织,并在不需要时将其遗漏.
归档时间: |
|
查看次数: |
313 次 |
最近记录: |