首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对子对象的引用数组初始化失败

对子对象的引用数组初始化失败
EN

Stack Overflow用户
提问于 2012-05-01 02:03:05
回答 3查看 223关注 0票数 3

我需要创建子对象的引用数组。在这种情况下,Room必须有对象的引用数组:DarkRoomLightRoom。在初始化类型为Room的数组的行中出现错误。遗漏了什么?

代码语言:javascript
运行
复制
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  { ... }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-01 02:07:21

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

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

票数 6
EN

Stack Overflow用户

发布于 2012-05-01 02:05:34

初始化不应在初始化块或方法之外进行,而应执行以下操作:

代码语言:javascript
运行
复制
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();
}
票数 4
EN

Stack Overflow用户

发布于 2012-05-01 02:07:21

它在抱怨空间块。您不能只将代码写入您的类定义中。

代码语言:javascript
运行
复制
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();
  }
  }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10388392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档