我需要创建子对象的引用数组。在这种情况下,Room必须有对象的引用数组:DarkRoom
和LightRoom
。在初始化类型为Room
的数组的行中出现错误。遗漏了什么?
public abstract class Room {
public Room[][] space = new Room[4][4]; // <<Syntax error on token ";",
space[0][0] = new DarkRoom();
space[0][1] = new LightRoom();
space[1][0] = new DarkRoom();
space[1][1] = new LightRoom();
}
public class LightRoom extends Room { ... }
public class DarkRoom extends Room { ... }
发布于 2012-05-01 02:07:21
你的设计太不靠谱了。类不应该保留子对象的数组,实际上不应该知道或依赖于它的子类。这既是递归的,也是逻辑上的噩梦。
我建议您将该数组从Room类中删除到更合适的位置,如Hotel类或House类。
发布于 2012-05-01 02:05:34
初始化不应在初始化块或方法之外进行,而应执行以下操作:
public Room[][] space = new Room[4][4];
{
space[0][0] = new DarkRoom();
space[0][1] = new LightRoom();
space[1][0] = new DarkRoom();
space[1][1] = new LightRoom();
}
发布于 2012-05-01 02:07:21
它在抱怨空间块。您不能只将代码写入您的类定义中。
public abstract class Room {
public Room[][] space = new Room[4][4]; // << error Syntax error on token ";",
public Room()
{
space[0][0] = new DarkRoom();
space[0][1] = new LightRoom();
space[1][0] = new DarkRoom();
space[1][1] = new LightRoom();
}
}
https://stackoverflow.com/questions/10388392
复制相似问题