如何解决“调用此必须是构造函数中的第一个语句”?

时间:2018-04-06 05:54:43

标签: java

我正在编写一个准系统游戏,我想用关键字轻松构建“怪物”,而不是每次都输入所有属性。

class Target {
    public Target(String code) {
        if (code.equals("biggest boss")) {
            this.(code, 50);
        } else if (code.equals("minion")) {
            this.(code, 4);
        }
    }

    public Target(String name, int health 
                  /*various other attributes here */) {
        this.name = name;
        this.health = health;
    }

    String name;
    int health;
}

但当然,当我运行此操作时,我收到错误call to this must be first statement in constructor。有什么建议?谢谢!

2 个答案:

答案 0 :(得分:4)

没有“绕过它”。假设您只有两个条件,那么可以执行

this(code, "biggest boss".equals(code) ? 50 : 40);

使用Map<String, Integer>map.get(code)来解析该值 - 但如果要调用另一个构造函数,this必须是第一行现在的课程。

答案 1 :(得分:1)

为什么你需要什么时候才能做到

public Target(String code) {
    this.code = code;
    if (code.equals("biggest boss")) {
        this.health = 50;
    } else if (code.equals("minion")) {
        this.health = 4;
    }
}