假设我们有这样的设置
public class foo {
int number = 0;
public void setNumber(int number) {
this.number = number;
}
}
public class bar extends foo {
/* Some other utilities added to the foo class */
public bar() {
super();
}
}
我们正在运行此任务
Scheduler.schedule(1000/* Every second */, () -> {
fooManager.forEach(f -> System.out.println(f.getNumber()));
})
现在如果我们这样做:
Foo fo = new foo();
fooManager.store(fo);
Bar ba = new bar();
如何让 ba
访问 ba.setNumber()
上的 fo
setNumber()
方法而不存储ba
中的 fo
并执行 ba.getFoInstance().setNumber()
并执行 ba.setNumber()
解释 v2:我希望 ba.setNumber()
调用 fa.setNumber()
正在寻找类似这样的内容:Bar ba = fo
,但你不能这样做,因为它会抛出ClassCastException
。
最佳答案
在我看来,你想要实现的是 proxy object 。
为什么您不想在 Bar
类的实例中保留对 Foo
的引用?它可能是这样的:
public class Bar extends Foo {
private Foo fa;
public bar(Foo fa) {
super();
this.fa = fa;
}
@Override
public void setNumber (int number) {
fa.setNumber(number);
}
@Override
public int getNumber () {
return fa.getNumber();
}
}
您还应该避免 Bar
扩展 Foo
,它们应该简单地实现共享通用方法的相同接口(interface)。
关于java - 从现有实例创建新实例,新类实例更改现有类参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35104718/