Java初始化类

时间:2018-09-17 09:09:52

标签: java class syntax

class Room {
    private String description;  
    private HashMap<String,Room> dir=new HashMap<String,Room>();

    Room(String de){
         description=de;
     }

    public String toString() {
        return description;
    }

    public void add(String s,Room r) {
        dir.put(s, r);
    }
}


class Game {
    Room lobby;   //Syntax error on token";",,expected
    lobby=new Room("pub");
} 

有两个类。Game类有一个问题,说令牌“;”,expected上的语法错误。我很困惑。

3 个答案:

答案 0 :(得分:0)

代替:

Room lobby;   //Syntax error on token";",,expected
lobby=new Room("pub");

使用内联声明和实例化:

Room lobby = new Room("pub");

您只能在一个类的代码{}(方法,静态/实例块,其他使用该块的构造)中包含一条语句。

答案 1 :(得分:0)

Java仅在

期间允许初始化
  1. 变量或
  2. 的声明
  3. 在方法/块中或
  4. 在街区内

JVM仅在上述步骤中才允许分配内存。在您提供的示例中,lobby=new Room("pub");由于在类级别JVM中不知道如何分配内存而导致错误。

答案 2 :(得分:0)

在Java的Initializing Fields doc之后,有三个选项:

1-声明初始化:

<field name="your_field_to_hide" attrs="{'invisible': [('your_other_module_field','condition','value')]}"/>

2-静态初始化程序块:

Room lobby=new Room("pub");

3-初始化程序块:

static {
    lobby=new Room("pub");
}