如何访问扩展数组列表中使用的其他类的类外部的变量?我收到一个错误,指出变量在扩展类中不存在.看一下,我想访问变量成员而不必在我的Object类中声明它:
public abstract class Object {
public int x, y;
}
public class House extends Object {
public int members = 10;
}
// Somewhere else
ArrayList<Object> list = new ArrayList<Object>();
list.add( new House() );
for (Object o : list ) {
o.members;
}
Run Code Online (Sandbox Code Playgroud)
问题是在我写的RTS中,我的Object类有40多个变量,只是因为它不能仅在子类中声明它们并从外部访问它们.希望你能理解.我怎样才能做到这一点?
你可以使用instanceof和演员:
for (Object o : list ) {
if (o instanceof House) {
h = (House) o;
h.members;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这通常被认为是糟糕的设计; 你应该考虑在界定适当的方法Object(这应该真的有另一个名字,正如其他人所指出的),并在覆盖它House.然后,您可以在Object不知道它所引用的对象类型的情况下调用该方法,如果它是a House,则将调用正确的方法.(学习如何正确地做到这一点,何时做,需要一些练习 - 谷歌多态和覆盖.)
| 归档时间: |
|
| 查看次数: |
1816 次 |
| 最近记录: |