📅  最后修改于: 2020-02-12 14:42:06             🧑  作者: Mango
枚举用于以编程语言表示一组命名常量的目的。例如,在一副扑克牌中的4套可以是名为Club,Diamond,Heart和Spade的4个枚举器,它们属于名为Suit的枚举类型。其他示例包括自然枚举类型(例如行星,星期几,颜色,方向等)。
当我们在编译时知道所有可能的值(例如,菜单上的选择,舍入模式,命令行标志等)时,将使用枚举。枚举类型的常量集不必始终保持固定。
在Java(从1.5开始)中,枚举使用枚举数据类型enum表示。Java枚举比C / C++枚举更强大。在Java中,我们还可以向其中添加变量,方法和构造函数。枚举的主要目的是定义我们自己的数据类型(枚举数据类型)。
Java中的枚举声明:
// 一个使用Java枚举enum的例子
enum Color
{
RED, GREEN, BLUE;
}
public class Test
{
// 测试代码
public static void main(String[] args)
{
Color c1 = Color.RED;
System.out.println(c1);
}
}
输出:
RED
// enum在类内声明.
public class Test
{
enum Color
{
RED, GREEN, BLUE;
}
// 测试代码
public static void main(String[] args)
{
Color c1 = Color.RED;
System.out.println(c1);
}
}
输出:
RED
枚举的重点:
/* 在enum Color,底层的转换如下:
class Color
{
public static final Color RED = new Color();
public static final Color BLUE = new Color();
public static final Color GREEN = new Color();
}*/
// Java程序,展示枚举对象在switch中的使用
import Java.util.Scanner;
// Enum枚举
enum Day
{
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY;
}
//测试代码
public class Test
{
Day day;
// 构造器
public Test(Day day)
{
this.day = day;
}
// 使用switch打印Day
public void dayIsLike()
{
switch (day)
{
case MONDAY:
System.out.println("周一太差劲了.");
break;
case FRIDAY:
System.out.println("周五棒极了.");
break;
case SATURDAY:
case SUNDAY:
System.out.println("周末最棒.");
break;
default:
System.out.println("周中还行吧.");
break;
}
}
// Driver method
public static void main(String[] args)
{
String str = "MONDAY";
Test t1 = new Test(Day.valueOf(str));
t1.dayIsLike();
}
}
输出:
周一太差劲了.
// Java程序,展示在枚举内部声明main方法.
enum Color
{
RED, GREEN, BLUE;
// 测试代码
public static void main(String[] args)
{
Color c1 = Color.RED;
System.out.println(c1);
}
}
输出:
RED
枚举和继承:
values(),ordinal()和valueOf()方法:
// Java程序,展示如何使用方法:values(), ordinal() and valueOf()
enum Color
{
RED, GREEN, BLUE;
}
public class Test
{
public static void main(String[] args)
{
// 调用values()
Color arr[] = Color.values();
// enum和循环
for (Color col : arr)
{
// 调用 ordinal()
System.out.println(col + " at index "
+ col.ordinal());
}
// 调用valueOf().
// 如果解注释最后一行代码,会报错
System.out.println(Color.valueOf("RED"));
// System.out.println(Color.valueOf("WHITE"));
}
}
输出:
RED at index 0
GREEN at index 1
BLUE at index 2
RED
枚举和构造函数:
枚举和方法:
// Java代码,展示enums可以有构造器和对应函数
// 一个enum
enum Color
{
RED, GREEN, BLUE;
// enum构造器,对每个常量分别调用
private Color()
{
System.out.println("构造器被调用 : " +
this.toString());
}
public void colorInfo()
{
System.out.println("普遍的颜色");
}
}
public class Test
{
// 测试代码
public static void main(String[] args)
{
Color c1 = Color.RED;
System.out.println(c1);
c1.colorInfo();
}
}
输出:
构造器被调用 : RED
构造器被调用 : GREEN
构造器被调用 : BLUE
RED
普遍的颜色