【发布时间】:2014-06-09 23:51:46
【问题描述】:
假设我有一个类 Foo,还有两个类 Foo1 和 Foo2 扩展了 Foo。
假设我有一个 Foo f,结果是一个 Foo1,我想在不使用构造函数的情况下更改它。如果只是改变 f 的字段,我可以手动完成:
f.field1= ..
f.field2= ..
但是,如果我想将其更改为 Foo2 该怎么办?
NB:关键是我想做这样的事情:
Foo f=new Foo1( ...);
Foo g=f;
g=new Foo2(...);
并且当g改变时让f改变,但显然这不起作用。
【问题讨论】:
-
您无法更改 Java 中的内容。你只能做不同的事情。
-
也许您想详细说明一下?如果你做 Foo1 f1 = new Foo1();富 g=f1;然后像 g.setSomething("val") 这样的东西 - 这会改变 g 和 f1。我不确定你为什么在那里有 g = new Foo2() 以及在这种情况下“当 g 改变时改变 f”是什么意思。
-
我想让f和g变成Foo2,这是g.setSomething("...")做不到的
标签: java