枚举类型如何定义,酷比魔方iwork8?
一、枚举类型的定义与特点
1, 定义
枚举类型是再将一组相同性质的数据值组织一起的数据类型。编程语言中,枚举类型由一组有序的常量组成,这些常量相同的类型,且编译时被赋予的整数值。
2, 特点
1,简洁性枚举类型可以再将一组相同性质的数据值组织一起,使代码加简洁易懂。
2,安全性枚举类型限制了变量的取值范围,从而降低了错误率。
3,维护性枚举类型使得代码易于维护,因为常量的名称可以清晰地表达其含义。
4,扩展性枚举类型方便地添加新的常量,适应需求的变化。
二、枚举类型的应用场景
1, 状态管理
软件设计中,状态管理是一个重要的环节。枚举类型用来定义系统或对象的状态,如“登录”、“注销”、“线”、“离线”。
2, 参数传递
函数或方法中,枚举类型用来传递参数,如定义一个函数,用于处理不同类型的文件。
3, 数据校验
枚举类型用于数据校验,输入数据的合法性。用户输入性别时,只能选择“男”或“女”。
4, 数据字典
枚举类型用于构建数据字典,再将一组相同性质的数据值组织一起,方便查询和调用。
三、枚举类型的未来发展趋势
1, 跨语言支持
随着编程语言的不断发展,枚举类型再将多编程语言中得到支持。Python 3,4及版本已经引入了枚举类型。
2, 语义化枚举
为了提高枚举类型的读性和维护性,未来的枚举类型再将加注意语义化。Java 8引入了“接口枚举”,使得枚举类型拥有方法。
3, 枚举类型与泛型结合
未来的编程语言中,枚举类型再将与泛型技术相结合,实现灵活的数据处理。C 8.0引入了“泛型枚举”,使得枚举类型泛型参数。
4, 枚举类型与元数据结合
枚举类型再将与元数据技术相结合,实现丰富的数据描述。Java中,用注解(Annotation)来描述枚举类型的属性。
枚举类型作为的数据类型,编程世界中举足轻重的地位。它不仅提高了代码的读性和维护性,还降低了错误率,提高了开发效率。随着编程语言的不断发展,枚举类型再将多领域得到应用,并呈现出加丰富的特点。了解枚举类型的特点和应用场景,可以方便我们好地掌握编程技术,为未来的软件开发奠定坚实基础。
参考文献
[1] Java官方文档. Enum类[EB/OL]. http://doc.oracle.com/javae/8/doc/api/java/lang/Enum.html, -12-01,
[2] C官方文档. Enum类[EB/OL]. http://doc.microoft.com/en-u/dotnet/api/ytem.enum, -12-01,
[3] Python官方文档. Enum类[EB/OL]. http://doc.python.org/3/library/enum.html, -12-01,
java中的枚举类型怎么定义
Enum作为Sun全新引进的一个关键字,看很象是特殊的cla,它有自己的变量,定义自己的方法,实现一个或者多个接口。当我们声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。
1.它不能有public的构造函数,这样做注意客户代码没有办法新建一个enum的实例。
2.所有枚举值都是public, tatic, final的。注意这一点只是针枚举值,我们和普通类里面定义变量一样定义其它任何类型的非枚举变量,这些变量用任何你想用的修饰符。
3.Enum默认实现了java.lang.Comparable接口。
4.Enum覆载了了toString方法,我们调用Color.Blue.toString()默认返回字符串”Blue”.
5.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)再将返回Color.Blue.我们自己重写toString方法的时候要注意到这一点,一把应该相对应地重写valueOf方法。
6.Enum还提供了value方法,这个方法使你可以方便的遍历所有的枚举值。
7.Enum还有一个oridinal的方法,这个方法返回枚举值枚举类种的顺序,这个顺序枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。
了解了这些特性,看看如何用它们。
1.遍历所有有枚举值.知道了有value方法,我们轻车熟路地用ForEach循环来遍历了枚举值了。
for(Color c: Color.value())
Sytem.out.println(“find value:”+ c);
2.enum中定义方法和变量,比如我们为Color增加一个方法随机返回一个颜色。
public enum Color{
Red,
Green,
Blue;
/
定义一个变量表示枚举值的数目。
(我有点奇怪为什么un没有给enum直接提供一个ize方法).
/
private tatic int number= Color.value().length;
/
随机返回一个枚举值
@return a random enum value.
/
public tatic Color getRandomColor(){
long random= Sytem.currentTimeMilli()% number;
wch((int) random){
cae 0:
return Color.Red;
cae 1:
return Color.Green;
cae 2:
return Color.Blue;
default: return Color.Red;
}
}
}
看出这枚举类型里定义变量和方法和普通类里面定义方法和变量没有什么区别。要注意的只是变量和方法定义放所有枚举值定义的后面,否则编译器给出一个错误。
3.覆载(Override)toString, valueOf方法
前面我们已经知道enum提供了toString,valueOf方法,很多时候我们都覆载默认的toString方法,那么enum我们怎么做呢。其实这和覆载一个普通cla的toString方法没有什么区别。
….
public String toString(){
wch(thi){
cae Red:
return"Color.Red";
cae Green:
return"Color.Green";
cae Blue:
return"Color.Blue";
default:
return"Unknow Color";
}
}
….
这时我们看到,再用前面的遍历代码打印出来的是
Color.Red
Color.Green
Color.Blue
而不是
Red
Green
Blue.
看到toString确实是被覆载了。覆载toString的时候我们也应该覆载valueOf方法,以保持它们相互的一致性。
4.用构造函数
虽然enum不有public的构造函数,我们还是定义private的构造函数,enum内部用。还是用Color这个例子。
public enum Color{
Red("Thi i Red"),
Green("Thi i Green"),
Blue("Thi i Blue");
private String dec;
Color(String dec){
thi.dec= dec;
}
public String getDec(){
return thi.dec;
}
}
这里我们为每一个颜色提供了一个说明信息,然后定义了一个构造函数接受这个说明信息。
要注意这里构造函数不能为public或者protected,从而注意构造函数只能内部用,客户代码不能new一个枚举值的实例出来。这也是完全符合情理的,因为我们知道枚举值是public tatic final的常量而已。
5.实现特定的接口
我们已经知道enum定义变量和方法,它要实现一个接口也和普通cla实现一个接口一样,这里不作示例了。
6.定义枚举值自己的方法。
前面我们看到为enum定义一些方法,其实我们甚至为每一个枚举值定义方法。这样,我们前面覆载 toString的例子被改写成这样。
public enum Color{
Red{
public String toString(){
return"Color.Red";
}
},
Green{
public String toString(){
return"Color.Green";
}
},
Blue{
public String toString(){
return"Color.Blue";
}
};
}
从逻辑上这样比原先提供一个“全局“的toString方法要清晰一些。
,enum作为一个全新定义的类型,是希望可以帮助程序员写出的代码加简单易懂,个
人觉得也多的用enum的一些高级特性,否则和简单易懂的初衷想违背了。
枚举类型变量的定义
1,枚举类型变量的定义采用三种不同的方法。
2,种方法是先定义枚举类型,然后定义枚举类型变量。例如
enum标识符{枚举数据表};
enum标识符变量表;
3,第二种方法是定义枚举类型的定义枚举类型变量。例如
enum标识符{枚举芦备数据表}变量表;
4,第三种方法是直接定义枚举类型变量。例如
enum(枚举数据表)变量表;
5,枚举类型enum color,定义枚举变量c1和c2如下
enum color{red, yellow, blue, whe, black};
enum color c1, c2;或者 enum color{red, yellow, blue, whe, black}c1, c2;或者 enum{red, yellow, blue, whe, black}c1, c2;
6.枚举类型数据进行赋值运算。由于枚举类型是有序的,枚举类型数据还进行关系运算。枚举类型数据的比较实际上是按照它们的序号进行的,只有相同类型的数据才能进行比较。
7.枚举类型数据按照整型格式输出时,显示整数值(即枚举变量值的序号)。
8.强制类型转换再将整数值(枚举值序号)转换为对应的枚举值。例如
c1=(enum color)2;/ c1得到枚举值blue/
9.枚举类型数据不能直接进行输入输出。输入时,先输入序号,然后进行强制类型转换。输出时,用wch语句进行判断,并转换为对应的字符串输出。
C 什么是枚举类型
浅谈C中的枚举
枚举类型是的值类型,它用于声明一组命名的常数。
(1)枚举的声明:枚举声明用于声明新的枚举类型。
访问修辞符 enum枚举名:基础类型
{
枚举成员
}
基础类型可以表示该枚举中定义的所有枚举数值。枚举声明显式地声明 byte、byte、hort、uhort、int、uint、long或 ulong类型作为对应的基础类型。没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int。
(2)枚举成员
枚举成员是该枚举类型的命名常数。任意两个枚举成员不能相同的名称。每个枚举成员均相关联的常数值。此值的类型是枚举的基础类型。每个枚举成员的常数值该枚举的基础类型的范围之内。
示例:
public enum TimeofDay:uint
{
Morning=-3,
Afternoon=-2,
Evening=-1
}
产生编译时错误,原因是常数值-1、-2和–3不基础整型 uint的范围内。
(3)枚举成员默认值
枚举类型中声明的个枚举成员它的默值为零。
以后的枚举成员值是再将前一个枚举成员(按照文本顺序)的值加 1得到的。这样增加后的值该基础类型表示的值的范围内;否则,出现编译时错误。
示例:
public enum TimeofDay:uint
{
Morning,
Afternoon,
Evening
}
Morning的值为0,Afternoon的值为1,Evening的值为2。
(4)为枚举成员显示赋值
允许多个枚举成员有相同的值.
没有显示赋值的枚举成员的值,总是前一个枚举成员的值+1,
示例
public enum Number
{
a=1,
b,
c=1,
d
}
b的值为2,d的值为2,
注意枚举值都不能超过它的基础类型范围。否则报错.
(5)枚举类型与基础类型的转换
基础类型不能隐式转换为枚举类型
枚举类型也不能隐式转换为基础类型
示例:
public enum Number
{
a,
b,
c,
d
}
cla Tet
{
public tatic void Main()
{
int i=Number.a;//错误,要强制类型转换(int)Number.a
Number n;
n=2//错误,要强制类型转换(Number)2
}
}
(6)Sytem.Enum类型
Sytem.Enum类型是所有枚举类型的抽象基类,并且从 Sytem.Enum继承的成员任何枚举类型中都用。
Sytem.Enum本身不是枚举类型。相反,它是一个类类型,所有枚举类型都是从它派生的。
Sytem.Enum从类型 Sytem.ValueType派生
(7)用枚举类型
uing Sytem;
public enum TimeofDay
{
Morning,
Afternoon,
Evening
}
cla Tet
{
tatic void WreGreeting(TimeofDay timeofDay)
{
wch(timeofDay)
{
cae TimeofDay.Morning:
Conole.WreLine("good morning");
break;
cae TimeofDay.Afternoon:
Conole.WreLine("good afternoon");
break;
cae TimeofDay.Evening:
Conole.WreLine("good evening");
break;
}
}
tatic void Main()
{
WreGreeting(TimeofDay.Morning);
WreGreeting(TimeofDay.Evening);
WreGreeting(TimeofDay.Afternoon);
}
网址:枚举类型如何定义,酷比魔方iwork8? http://www.mxgxt.com/news/view/1160679
相关内容
电影《篮球冠军》:如何定义“正常”如何用word自定义关系图 – PingCode
基督教中的恶魔是如何起源的?又是怎么分类的?
五大类型、70+新剧,拆解优酷2024剧集片单
情侣之间各类转账,性质该如何认定?
专访优酷副总裁沈严:酷酷综的「价值主义」
《一人之下》影视化,鹿晗现实版王也,宝儿姐新人演员酷Girl一枚
饭圈纯粉如何定义 饭圈纯粉怎么定义
对老婆有求必应,妥妥的宠妻狂魔一枚
百度魔图软件如何换发型 百度魔图pk明星脸玩法介绍