我有一个带有两个变量的Enum类:int id
和boolean 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使用switch
或id
设置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/