Java——枚举类(疯狂Java讲义6.9)
枚举类:有限而固定的类,使用enum关键字定义。
一个Java源文件中最多只能定义一个public访问权限的枚举类。
1、可实现一个或多个接口,默认集成了java.lang.Enum类(实现java.lang.Serializable和java.lang.Comparable两个接口),不能显示继承其他父类;
2、非抽象的枚举类默认使用final修饰,不能被继承;
3、构造器只能使用private 访问控制符(默认);
4、枚举类的所有实例必须在枚举类的第一行显示列出,否则这个枚举类永远都不能产生实例,实例默认是public static final修饰;
5、values()方法可以遍历所有的枚举值
java.lang.Enum类中包含的方法:
1、int compareTo(E o):与指定枚举对象比较顺序,同一个枚举实例只能与相同类型的枚举实例进行比较。如果该美剧对象位于指定枚举对象之后,则返回正整数;如果位于指定枚举对象之前,则返回负整数,否则返回零。
2、String name():返回枚举实例的名称,该名称就是定义枚举类时列出的所有枚举值之一。
3、int ordinal():返回枚举值在枚举类中的索引值(即 枚举值在枚举声明中的位置)。
4、String toString():返回枚举常量的名称,与name方法相似,此方法更常用
5、public static<T extends Enum<T>> T valueOf(Class<T> enumType, String name)>:用于返回指定枚举类中指定名称的枚举值
public class GenderTest
{
public static void main(String[] args)
{
Gender g = Gender.valueOf("FEMALE");
g.setName("女");
System.out.println(g + "代表:" + g.getName());
//此时设置name 值时将会提示参数错误
g.setName("男");
System.out.println(g + "代表:" + g.getName());
}
}
public enum Gender
{
MALE,FEMALE;
private String name;
public void setName(String name)
{
switch (this)
{
case MALE:
if (name.equals("男"))
{
this.name = name;
}
else
{
System.out.println("参数错误");
return;
}
break;
case FEMALE:
if (name.equals("女"))
{
this.name = name;
}
else
{
System.out.println("参数错误");
return;
}
break;
}
System.out.println("我是参数错误时,不加17和28行return语句的测试");
}
public String getName()
{
return this.name;
}
}
小插曲:return语句可用于结束方法,当发生参数错误的时候,要立马结束setName()方法。
改进:枚举类通常应该设计成不可变类,所以建议将枚举类的成员变量都使用private final修饰,final修饰则必须在构造器里为这些成员变量指定初始值,因而要为枚举类显示定义带参数的构造器。
public enum Gender
{
//此处的枚举值必须调用对应的构造器来创建
MALE("男"),FEMALE("女");
//上面一行代码实际上等同于如下两行代码,但是为啥有错呢。。。
// public static final Gender MALE = new Gender("男");
// public static final Gender FEMALE = new Gender("女");
private final String name;
//枚举类的构造器只能使用private 修饰
private Gender(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
} }
附上对Enum讲解详细的网址:http://www.ibm.com/developerworks/cn/java/j-lo-enum/
Java——枚举类(疯狂Java讲义6.9)的更多相关文章
- 【Java】-NO.16.EBook.4.Java.1.005-【疯狂Java讲义第3版 李刚】- 枚举
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.005-[疯狂Java讲义第3版 李刚]- 枚举 Style:EBook Series:Java Si ...
- 【Java】-NO.16.EBook.4.Java.1.007-【疯狂Java讲义第3版 李刚】- Java基础类
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.007-[疯狂Java讲义第3版 李刚]- Java基础类 Style:EBook Series:J ...
- 【Java】-NO.16.EBook.4.Java.1.008-【疯狂Java讲义第3版 李刚】- 集合/容器
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.008-[疯狂Java讲义第3版 李刚]- 集合 Style:EBook Series:Java Si ...
- 【Java】-NO.16.EBook.4.Java.1.011-【疯狂Java讲义第3版 李刚】- AWT
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.011-[疯狂Java讲义第3版 李刚]- AWT Style:EBook Series:Java ...
- 【Java】-NO.16.EBook.4.Java.1.012-【疯狂Java讲义第3版 李刚】- JDBC
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.012-[疯狂Java讲义第3版 李刚]- JDBC Style:EBook Series:Java ...
- 【Java】-NO.17.EBook.4.Java.1.014-【疯狂Java讲义第3版 李刚】- Annotation
1.0.0 Summary Tittle:[Java]-NO.17.EBook.4.Java.1.014-[疯狂Java讲义第3版 李刚]- Annotation Style:EBook Serie ...
- 【Java】-NO.16.EBook.4.Java.1.009-【疯狂Java讲义第3版 李刚】- 泛型
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.009-[疯狂Java讲义第3版 李刚]- 泛型 Style:EBook Series:Java Si ...
- 【Java】-NO.16.EBook.4.Java.1.010-【疯狂Java讲义第3版 李刚】- 异常
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.010-[疯狂Java讲义第3版 李刚]- 异常 Style:EBook Series:Java Si ...
- 【Java】-NO.16.EBook.4.Java.1.001-【疯狂Java讲义第3版 李刚】- UML
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.001-[疯狂Java讲义第3版 李刚]- Style:EBook Series:Java Since ...
- 【Java】-NO.16.EBook.4.Java.1.003-【疯狂Java讲义第3版 李刚】- oop
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.003-[疯狂Java讲义第3版 李刚]- oop Style:EBook Series:Java S ...
随机推荐
- Floyd —Warshall(最短路及其他用法详解)
一.多元最短路求法 多元都求出来了,单源的肯定也能求. 思想是动态规划的思想:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B.所以,我们假设Dis(A ...
- POJ - 2251 Dungeon Master(搜索)
You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of un ...
- visibility: hidden 和 display: none的区别
相同点: 两者都可以将dom元素隐藏 不同点: 1.display: none 隐藏之后不占用文档流,而visibility: hidden却会占用文档流,如果要在隐藏元素的同时获取其尺寸信息,那就可 ...
- Android 开发技术周报 Issue#278
新闻 Pixel 4a渲染图曝光:或能成新款iPhone SE有力竞争者 Google Play商店为预注册的游戏和应用提供自动安装功能 Android最强单摄Pixel 4a样张曝光:1200万像素 ...
- Java——SSM整合所需的Maven配置文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- js递归实现方式
定义: 递归函数就是在函数体内调用本函数: 递归函数的使用要注意函数终止条件避免死循环: 递归实现形式: 1.声明一个具名函数,通过函数名调用 function f(a){ if(a<=1){ ...
- Cell Phone Network G
最小点队的题意:https://www.luogu.com.cn/problem/P2899 与战略游戏不同的是,这里要求占领所有的点而不是边. 1自己被自己染色(有信号塔) 这时我们可以想一下,u被 ...
- D. Misha, Grisha and Underground 树链剖分
D. Misha, Grisha and Underground 这个题目算一个树链剖分的裸题,但是这个时间复杂度注意优化. 这个题目可以选择树剖+线段树,时间复杂度有点高,比较这个本身就有n*log ...
- idea撤销快捷键
Ctrl+z:撤销. Ctrl+shift+z:取消撤销.
- 使用 if elseif else 指定条件
nrows = 4; ncols = 6; A = ones(nrows,ncols); 遍历矩阵并为每个元素指定一个新值.对主对角线赋值 2,对相邻对角线赋值 -1,对其他位置赋值 0. for c ...