[英]How to change from Constructors to Enum in java?
我有这些整数和这个使用构造函数的方法,但我应该把它改成一个枚举,因为这个代码已经过时了。 我确实理解 Enums 在理论上是如何工作的,但无论我试图改变什么,我都做错了。
public static final int CHILDRENS = 2;
public static final int REGULAR = 0;
public static final int NEW_RELEASE = 1;
private Price price;
public void setPriceCode(int priceCode) {
switch (priceCode) {
case REGULAR:
price = new RegularPrice();
break;
case CHILDRENS:
price = new ChildrensPrice();
break;
case NEW_RELEASE:
price = new NewReleasePrice();
break;
default:
throw new IllegalArgumentException("Incorrect Price Code");
}
}
我认为要更改为枚举,我应该首先删除顶部的给定整数,然后在方法之前添加它:
enum cases {
REGULAR, CHILDRENS, NEW_RELEASE;
}
现在我不知道如何相应地更改方法的代码。 如何给案例提供整数,我不应该删除这些:?
public static final int CHILDRENS = 2;
我应该如何相应地更改我的开关盒? 真的很感激一些帮助,我看了一堆关于枚举的视频,但情况却大不相同。
像这样做:
enum PriceCode {
REGULAR(0), // calls constructor with value 0
NEW_RELEASE(1), // calls constructor with value 1
CHILDREN(2) // calls constructor with value 2
;
private final int priceCode;
private PriceCode(int priceCode) {
this.priceCode = priceCode;
}
int value() {
return priceCode;
}
}
public class Main {
// Usage
public static void setPriceCode(PriceCode priceCode) {
System.out.println("The value of " + priceCode + " is " + priceCode.value());
switch (priceCode) {
case REGULAR:
// Do something
break;
case CHILDREN:
// Do something
break;
case NEW_RELEASE:
// Do something
break;
default:
throw new IllegalArgumentException("Incorrect Price Code");
}
}
public static void main(String[] args) {
// Set price code as CHILDREN
setPriceCode(PriceCode.CHILDREN);
// Another sample usage
System.out.println("Price code of NEW_RELEASE is " + PriceCode.NEW_RELEASE.value());
}
}
Output:
The value of CHILDREN is 2
Price code of NEW_RELEASE is 1
在Oracle 的 Java 教程中了解有关枚举和枚举构造函数的更多信息。
将枚举视为 class 或接口,换句话说,它是一种类型。 我推荐以下教程: 枚举类型根据 java 编码约定,类型名称应以大写字母开头。 因此,在下面的代码中,我将枚举的名称更改为Cases
。
因此方法setPriceCode
的参数应该是Cases
。 代码的rest保持不变。
enum Cases {
REGULAR, CHILDRENS, NEW_RELEASE;
}
private Price price;
public void setPriceCode(Cases priceCode) {
switch (priceCode) {
case REGULAR:
price = new RegularPrice();
break;
case CHILDRENS:
price = new ChildrensPrice();
break;
case NEW_RELEASE:
price = new NewReleasePrice();
break;
default:
throw new IllegalArgumentException("Incorrect Price Code");
}
}
这是对方法setPriceCode()
的示例调用
setPriceCode(Cases.CHILDRENS);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.