枚举

时间:2016-05-07 09:51:48

标签: java enums

我最近了解到Enums是一种数据类型,就像int,char等。但是在Enums中我们可以定义我们的数据类型。但我的问题是用户定义数据类型的必要性。如果提供真实场景的示例,我会很有帮助。

3 个答案:

答案 0 :(得分:1)

用户数据类型就像构建块。我们有这些标准块的数量有限(例如原始类型),因此,我们需要通过构建自己的类来扩展它们。枚举是一个具有无法更改的预定义值的类。

例如,

public enum ProfessionType { DOCTOR, MANAGER, SELLER; }

我们保证只会创建DOCTORMANAGER的一个实例,依此类推。想象一下,我们将手动创建一个医生类型(在这种情况下,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;
    }