我最近了解到Enums是一种数据类型,就像int,char等。但是在Enums中我们可以定义我们的数据类型。但我的问题是用户定义数据类型的必要性。如果提供真实场景的示例,我会很有帮助。
答案 0 :(得分:1)
用户数据类型就像构建块。我们有这些标准块的数量有限(例如原始类型),因此,我们需要通过构建自己的类来扩展它们。枚举是一个具有无法更改的预定义值的类。
例如,
public enum ProfessionType { DOCTOR, MANAGER, SELLER; }
我们保证只会创建DOCTOR
,MANAGER
的一个实例,依此类推。想象一下,我们将手动创建一个医生类型(在这种情况下,ProfessionType
是一个类)
ProfessionType doctor1 = new ProfessionType("doctor");
ProfessionType doctor2 = new ProfessionType("doctor");
哪一个更好?我是doctor1
类型的医生还是第二类医生?
答案 1 :(得分:1)
枚举类型是一种特殊的数据类型,它允许变量 一组预定义的常量。
以下是一些代码,向您展示如何使用上面定义的Day枚举:
public class EnumTest {
Day day;
public EnumTest(Day day) {
this.day = day;
}
public void tellItLikeItIs() {
switch (day) {
case MONDAY:
System.out.println("Mondays are bad.");
break;
case FRIDAY:
System.out.println("Fridays are better.");
break;
case SATURDAY: case SUNDAY:
System.out.println("Weekends are best.");
break;
default:
System.out.println("Midweek days are so-so.");
break;
}
}
public static void main(String[] args) {
EnumTest firstDay = new EnumTest(Day.MONDAY);
firstDay.tellItLikeItIs();
EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
thirdDay.tellItLikeItIs();
EnumTest fifthDay = new EnumTest(Day.FRIDAY);
fifthDay.tellItLikeItIs();
EnumTest sixthDay = new EnumTest(Day.SATURDAY);
sixthDay.tellItLikeItIs();
EnumTest seventhDay = new EnumTest(Day.SUNDAY);
seventhDay.tellItLikeItIs();
}
}
输出结果为:
Mondays are bad.
Midweek days are so-so.
Fridays are better.
Weekends are best.
Weekends are best.
有关详细信息,请查看this教程。
答案 2 :(得分:0)
假设我们被要求对发送给函数的句子的每个字母的位置数字求和
示例:
A = 1,B = 2,C = 3 ....等等
所以我们不用在循环中切换每个字符然后再添加其值,我们可以在此处使用Enum,因为默认情况下所有值都加1
public enum Alpha
{
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
}
// based on the input
public static int Count(string name="")
{
int sum = 0;
foreach (char item in name)
{
if (!string.IsNullOrWhiteSpace(item.ToString()))
sum += (int)Enum.Parse(typeof(Alpha), item.ToString().ToUpper());
}
return sum;
}