3

我需要创建对子对象的引用数组。在这种情况下, 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  { ... }
4

3 回答 3

6

你的设计太离谱了。一个类不应该包含一组子对象,实际上不应该知道或依赖于它的子类。这既是递归的,也是逻辑上的噩梦。

我建议您将数组从 Room 类中删除到更合适的位置,例如 Hotel 类或 House 类。

于 2012-04-30T18:07:20.533 回答
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();
}
于 2012-04-30T18:05:33.893 回答
4

它在抱怨 space[][] 块。您不能只在类定义中编写代码。

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();
  }
  }
于 2012-04-30T18:07:20.930 回答