我有一个带有两个变量的Enum类:int idboolean collidable
有没有办法使构造函数只接收第一个变量并正确填充第二个变量?请注意,第一类变量是id,并且对于Enum的每个类型值而言都是不同的。

public enum TileID {
    Grass(1,false),
    GrassTall(2,false),
    GrassFlower1(3,false),
    GrassFlower2(4,false),
    Water(5,false),

    GrassTwig(6,true),
    GrassRock(7,true);


    private final int id;
    private final boolean collidable;

    TileID(int id, boolean collidable) {
        this.id = id;
        this.collidable = collidable;
    }


    public int getId() {
        return id;
    }

    public boolean isCollidable() {
        return collidable;
    }
}

最佳答案

当然,只要没有常量具有相同的collidable字段而不是相同的if字段,就可以始终根据ID使用switchid设置collidable字段。
做就是了

TileID(int id) {
    this.id = id;
    this.collidable = id > 5; //or some other condition
}

然后在常量(Grass(1), GrassTall(2), ...)中省略第二个参数。

关于java - Java:枚举类构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62489757/

10-10 03:37