我试图使用字符串来评估字符串内容是否等于我声明的枚举类型。但是,我在 Eclipse 中遇到错误,试图强制我将 nameOfMonth 创建为枚举常量。对我来说,使用枚举似乎更容易,而不是编写代码来专门声明一月为#1,二月为#2,等等。有没有办法可以使用用户定义的字符串并将其与我的枚举进行比较?例如,在下面的代码中,如果参数 String nameOfMonth 等于一月,我希望它提取索引位置并添加一个。
这是代码:
package ProgrammingChallenges;
public class Month
{
enum MONTH
{
January, February, March, April, May, June, July, August, September, October, November, December
}
private int monthNumber;
public Month()
{
monthNumber = 1;
}
public Month(int monthNumber)
{
if (monthNumber < 1 || monthNumber > 12)
this.monthNumber = 1;
else
this.monthNumber = monthNumber;
}
public Month(String nameOfMonth)
{
if(nameOfMonth.equals(MONTH.nameOfMonth))
this.monthNumber = namOfMonth.ordinal() + 1;
}
}
最佳答案
Enum.valueOf
您可以使用valueOf
枚举的方法。
public Month(String nameOfMonth)
{
this.monthNumber = MONTH.valueOf(nameOfMonth).ordinal() + 1;
}
这里不需要if语句,直接使用Java内置的valueOf
枚举静态方法即可获取字符串对应的枚举。如果 nameOfMonth
与枚举不匹配,它将抛出异常:
java.lang.IllegalArgumentException: No enum constant com.yourclass.yourenum.the_invalid_enum_name
at java.lang.Enum.valueOf(Unknown Source)
关于java - 使用字符串来评估枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19392385/