无法初始化子对象的引用数组

时间:2012-04-30 18:03:05

标签: java oop

我需要创建对子对象的引用数组。在这种情况下,Room必须包含对象的引用数组:DarkRoomLightRoom。在类型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  { ... }

3 个答案:

答案 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();
  }
  }