Java 我可以使用带有参数的枚举吗?

Java 我可以使用带有参数的枚举吗?,java,Java,我有一个预先确定的有限值列表。这些值中的每一个都必须映射到另一个值 例如: AAAAA -> AZER BBBBB -> BVCX 但我也有,取决于一些参数: CCCCC -> CPA1 CCCCC -> CPA2 CCCCC -> CPA3 CCCCC -> CPA4 我最初考虑使用枚举,但如何将参数考虑在内?您可以使用下面这样的构造函数来映射值 enum Apple { A(10), B(9), C(12), D(15), E(8); pri

我有一个预先确定的有限值列表。这些值中的每一个都必须映射到另一个值

例如:

AAAAA -> AZER
BBBBB -> BVCX
但我也有,取决于一些参数:

CCCCC -> CPA1
CCCCC -> CPA2
CCCCC -> CPA3
CCCCC -> CPA4

我最初考虑使用枚举,但如何将参数考虑在内?

您可以使用下面这样的构造函数来映射值

enum Apple {
  A(10), B(9), C(12), D(15), E(8);

  private int price; // price of each apple 

  // Constructor 
  Apple(int p) {
    price = p;
  }

  int getPrice() {
    return price;
  }
}

您可以使用下面这样的构造函数来映射值

enum Apple {
  A(10), B(9), C(12), D(15), E(8);

  private int price; // price of each apple 

  // Constructor 
  Apple(int p) {
    price = p;
  }

  int getPrice() {
    return price;
  }
}

您可以向枚举添加方法,以便传递参数,例如

enum MyEnum {
  AAAAA {
    @Override String mappedValue(Param parameter) { return "AZER"; }
  },
  BBBBB {
    @Override String mappedValue(Param parameter) { return "BVCX"; }
  },
  CCCCC {
    @Override String mappedValue(Param parameter) {
      if (parameter.equals(something)) {
        return "CPA1";
      } else if (parameter.equals(somethingElse)) {
        return "CPA2";
      } else {
        return "CPA3";
      }
    }
  }
  ;

  abstract String mappedValue(Param parameter);
}

您可以向枚举添加方法,以便传递参数,例如

enum MyEnum {
  AAAAA {
    @Override String mappedValue(Param parameter) { return "AZER"; }
  },
  BBBBB {
    @Override String mappedValue(Param parameter) { return "BVCX"; }
  },
  CCCCC {
    @Override String mappedValue(Param parameter) {
      if (parameter.equals(something)) {
        return "CPA1";
      } else if (parameter.equals(somethingElse)) {
        return "CPA2";
      } else {
        return "CPA3";
      }
    }
  }
  ;

  abstract String mappedValue(Param parameter);
}

通过向枚举中添加变量,并在其构造函数中进行设置。通过什么逻辑
ccccccc
映射到不同的值?通过读取,您可以在枚举上拥有带参数的方法。Java枚举与其他一些语言中的并集类型不同。通过向枚举中添加变量,并在其构造函数中设置它。通过什么逻辑将
ccccccc
映射到不同的值?通过读取,您可以在枚举上拥有带参数的方法。Java枚举与其他一些语言中的并集类型不同。这不允许
ccccccc
根据某个参数具有四种不同的价格.这不允许
CCCCC
根据“某些参数”有四种不同的价格。