Java是一种面向对象的编程语言。因此, Java中的枚举 比C/C++中的枚举更有效力。我们可以向它添加方法、变量和构造函数。
枚举的关键点
Java 枚举
Java中的枚举代表编程中的一组命名常量。枚举是一个特殊的类,代表一组常量。Enum中所有可能的值都在编译时使用。因此,我们可以 在枚举数据类型的帮助下表示一个枚举类。
例如,扑克牌中的四种花色可以是四个枚举器,名为Club、Diamond、Heart和Spade,属于名为Suit的枚举类型。
其他的例子包括像行星、星期几、颜色、方向等自然类型的枚举。最后,枚举是不可改变的变量,就像最终变量一样。
让我们看看如何创建声明一个枚举。
枚举的语法
enum enum_name
{
Constant list/ methods
}
请看下面的Test.java文件。
enum WeekDays
{
sunday, monday, tuesday, wednesday, thursday, friday, saturday
}
class Test
{
public static void main(String []er)
{
WeekDays wd; //wk is an enumeration variable of type WeekDays
wd = WeekDays.sunday; //wk can be assigned only the constants defined under enum type Weekdays
System.out.println("Today is "+wd);
}
}
在上面的例子中,周日、周一......这些都被称为枚举常量。这些都是公共的、静态的、默认为最终的。
我们可以通过一个新的关键字来创建一个enum的实例吗?
不能,因为它只包含私有构造函数。
我们可以在枚举中拥有一个抽象的方法吗?
可以,当然可以。我们可以有抽象的方法,并且可以提供这些方法的实现。
枚举类型的变量可以不用 new 关键字 来声明 。
枚举类型的变量只能有枚举常量作为一个值。因此,我们定义一个枚举变量的语法如下。
enum_variable = enum_type.enum_constant。
请看输出结果:
现在我们来看看如何在枚举中使用switch case。
请看下面的代码:
enum WeekDays
{
sunday, monday, tuesday, wednesday, thursday, friday, saturday
}
class Switch
{
public static void main(String []er)
{
WeekDays wd;
wd = WeekDays.monday;
switch(wd)
{
case sunday:
System.out.println("Today is "+wd.sunday);
break;
case monday:
System.out.println("Today is "+wd.monday);
break;
case tuesday:
System.out.println("Today is "+wd.tuesday);
break;
case wednesday:
System.out.println("Today is "+wd.wednesday);
break;
case thursday:
System.out.println("Today is "+wd.thursday);
break;
case friday:
System.out.println("Today is "+wd.friday);
break;
case saturday:
System.out.println("Today is "+wd.saturday);
break;
}
}
}
请看输出:
Values()和valueOf()方法
所有的枚举都是预定义的方法 values() 和 valueOf() 。
枚举中的values()方法的主要作用是什么?
java编译器在内部添加了values()函数来创建枚举。values()方法返回包含枚举所有值的数组。
values()方法返回包含所有枚举常数的枚举型数组。
values()方法的语法如下。
public static enum-type [] values();
valueOf()方法返回枚举常量的值,该值等于调用该方法时作为参数传入的一个字符串。
请看下面的语法
public static enum-type[] valueOf(String s);
让我们看看这两个方法的例子:
enum WeekDays
{
sunday, monday, tuesday, wednesday, thursday, friday, saturday
}
class Method
{
public static void main(String []er)
{
WeekDays wd;
System.out.println("Constant of enum type weekdays are :");
WeekDays arr[]=WeekDays.values();
for(WeekDays a: arr)
{
System.out.print(" "+a);
}
wd=WeekDays.valueOf("sunday");
System.out.println("\nToday is "+wd);
}
}
请看下面的输出:
现在我们将了解包含枚举中构造方法的完整程序。
请看下面的程序并分析其输出。
enum WeekDays
{
sunday(1), monday(2), tuesday(3), wednesday(4), thursday(5), friday(6), saturday(7);
private int day;
int getday()
{
return day;
}
WeekDays(int day)
{
this.day=day;
}
}
class Final
{
public static void main(String []er)
{
WeekDays wd;
System.out.println("Sunday is the "+WeekDays.sunday.getday()+" day of week");
}
}
请看下面的输出:
枚举和类的区别
枚举可以,就像类 一样,有属性和方法。
主要的区别是枚举常量是公共的、静态的、最终的和不可改变的,不能被重写。
枚举不能用来创建对象,也不能扩展其他类,但它可以实现接口。
所以,Java中的枚举就到此为止。
本教程就到此为止。
The postJava Enum:完整指南》首次出现在AppDividend上。



