我需要创建对子对象的引用数组。在这种情况下,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 { ... }
答案 0 :(得分:6)
你的设计远远不够。一个类不应该包含一个子对象数组,实际上应该不知道或依赖它的子类。这既是递归也是逻辑的噩梦。
我建议你将Room类中的数组移到更合适的位置,例如Hotel类或House类。
答案 1 :(得分:4)
初始化不应该在初始化块或方法之外完成,而是执行:
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();
}
答案 2 :(得分:4)
它抱怨空格[] []块。您不能只将代码写入类定义中。
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();
}
}