错误:<identifier>期望</identifier>

时间:2013-04-10 18:50:24

标签: java

当我尝试编译Report.java时,我在第6行收到错误:error: <identifier> expected aClient.setClientName("Michael"); with和箭头指向第一个括号。

public class Client {

    private String _clientName;

    public String getClientName(){
        return _clientName;
    }
    public void setClientName(String clientName){
        _clientName = clientName;
    }

}
public class Report {

    Client aClient = new Client();
    //ClientLawn aClientLawn = new ClientLawn();

    aClient.setClientName("Michael");
    //aClientLawn.setLawnWidth(10);
    //aClientLawn.setLawnLength(10);

    public void output(){
        System.out.println(aClient.getClientName());
        //System.out.println(aClientLawn.calcLawnSize());
    }

}

我还要注意我是Java的新手,所以请保持温和。

3 个答案:

答案 0 :(得分:3)

使用instance initialization block

public class Report {

    Client aClient = new Client();
    //ClientLawn aClientLawn = new ClientLawn();
    {
        aClient.setClientName("Michael");
        //aClientLawn.setLawnWidth(10);
        //aClientLawn.setLawnLength(10);
    }
    ...
}

答案 1 :(得分:2)

此行应放入初始化程序块中:

{
    aClient.setClientName("Michael");
}

因此它在创建aClient后执行。

这里的代码是为Report的每个实例运行的。遗憾的是,您无法为其设置参数。如果您想这样做,请将此块放入构造函数中:

public Report (String clientName) {
    aClient.setClientName(clientName);
    //aClientLawn.setLawnWidth(10);
    //aClientLawn.setLawnLength(10);
}

答案 2 :(得分:0)

正如其他人所指出的,你不能在方法之外执行代码,所以以下几行是非法的:

Client aClient = new Client();
aClient.setClientName("Michael");

它们需要包含在方法中,例如类'constructor:

public class Report {
    public Report() {
        Client aClient = new Client();
        aClient.setClientName("Michael");
    }

    // ....
}

看起来您希望此代码可执行,在这种情况下,您希望将所有内容放在main方法中,例如:

public class Report {
    public static void main(String... args) {
        Client aClient = new Client();
        aClient.setClientName("Michael");
        System.out.println(aClient.getName());
    }
}

然后,您可以编译并执行Report类。