可以说我有一类狗,它有很多属性,例如发色,重量,长度,宽度

然后,我有了一个犬种枚举,例如DogType.MASTIFF

因此,如果我要养狗,我可以拥有Dog dog = new Dog(DogType.POODLE)

我这样做是为了在方法相同时不必为每种单一的狗类型都设置单独的类,只需要更改属性即可

所以在狗构造器中

switch(DogType){
    case MASTIFF:
      this.weight = 5
      this.height = 10
}
...


但是,这将导致Dog类的构造器非常庞大且笨拙。

我要问的是有一种方法可以为每个枚举定义很多常量值吗?因此,代替该switch语句,它类似于在给定DogType的构造函数中,您可以使用
DogType.WEIGHT

或代码DogType.MASTIFF.WEIGHT中其他位置的特定类型

我觉得我想念什么。在其他语言中,我只需要编写一种常量字典即可。

最佳答案

将枚举与构造函数一起使用:https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
在您的情况下:

public enum DogType {
POODLE(2, 20), MASTIFF(40, 45);

private int weight;
private int height;

DogType(int weight, int height) {
    this.weight = weight;
    this.height = height;
}

public int getWeight() {
    return weight;
}

public int getHeight() {
    return height;
}
}


然后将适当的枚举传递给您的方法并调用getter。

关于java - 如何在Java中存储和重用一组相关的常数值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59576692/

10-09 00:11