我不确定它是否像我写的一样直接,但我有一个用例,其中必须同时完成两个函数调用。
示例:
class ABC {
int a;
String b;
setA(int x) {
//..
}
setB(int y) {
// ...
}
}
所以我想要的是,当我致电setA()
时,setB()
也应该被隐含地调用,
即我不想写:
setA(int x) {
// ..
setB(x);
}
有没有办法做到这一点?我想添加一些像监听器这样的东西,以便在调用setA()
时,我的监听器会调用setB()
。这是一个选择吗?
答案 0 :(得分:1)
你的setA()调用的目标总是后跟一个setB()调用而不显式调用这个看起来很傻。你有实际的理由不写:
public void setA(int x) {
...
setB(x);
}
答案 1 :(得分:1)
你应该考虑所有那些聪明而有用的答案。
如果这些没有帮助,你可能会寻找某种AOP solution - 这就是你想要的想法:“如果有人调用firstMethod(),拦截那个调用,做任何其他的东西,然后也许调用想要的方法,然后做一堆其他的东西。“例如,保持日志记录层与逻辑层完全分离是很好的 - 逻辑层甚至不会知道它被拦截和记录。
BUT!相信我,设置它的问题通常是不值得它,它并不完全符合OOP标准。但是,如果您的问题 比您发布的代码段更复杂,并且您真的可以使用此功能,那么AspectJ或Spring AOP就可以了。
答案 2 :(得分:0)
嗯...
setAandB(int x)
{
seta(x);
setb(x);
}
确切地说它......
答案 3 :(得分:0)
您在评论中说,用户可以调用setA(x);
,这也应该导致调用setB(x);
,这样如果用户未明确调用setB(x);
,它仍会两个变量都有一个值。
在这种情况下,为什么不实现你的getter方法getB();
,以便查看是否已设置,如果没有,则相应地设置它...
public String getB(){
if (b == null){
// hasn't been set by the user, so lets set it to the value of 'a'
setB(a);
}
return b;
}
现在,如果用户只调用setA(x);
,当他们尝试拨打getB(x);
时,会在返回之前设置b
的值。