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 ...
随机推荐
- Fibonacci Sequence
0 递归 斐波那契数列定义: $F(n)=\left\{\begin{matrix}0, & n=0\\ 1, & n=1\\ F(n-1)+F(n-2), & n>1\ ...
- LeetCode 25. K 个一组翻转链表 | Python
25. K 个一组翻转链表 题目来源:https://leetcode-cn.com/problems/reverse-nodes-in-k-group 题目 给你一个链表,每 k 个节点一组进行翻转 ...
- RF(IF 判断)
1.关键字 Run Keyword If,格式如下: ELSE 必须大写 ELSE 前面需要加 "..." 表示缩进 Run Keyword If a == b log T ...
- MySQL 入门(2):索引
摘要 在这篇文章中,我会先介绍一下什么是索引,索引有什么作用. 之后会介绍一下索引的数据结构是什么样的,有什么优点,又会带来什么样的问题. 在分析完数据结构后,我们可以根据这个数据结构,研究索引的用法 ...
- KMP+Tire树(模板)
\(\color{Red}{KMP板子}\) #include <bits/stdc++.h> using namespace std; const int maxn=1e6+9; int ...
- jQuery中bind()与on()绑定事件的区别
.on()方法比.bind()方法多一个参数selector .on()的selector参数是筛选出调用.on()方法的dom元素的指定子元素,如: $("ul").on('cl ...
- shell命令之巧用cut
需求:取出日志中ip字段,并进行统计排序 .一般用用awk命令 假如ip地址为第一个字段 那么 awk ‘{print $1}’ 文件名 |sort |uniq -c|sort-nr 那如果不是第一个 ...
- Neo4j填坑记录-Neo4jClient建立节点、建立关系相关
最近一个项目需要用到知识图谱,选用了neo4j图数据库,在这过程中遇到几个坑,记录一下 1.无法登录,疯狂提示“WebSocket connection failure. Due to securit ...
- JAVA知识总结(一):概述
第一次写文章,有点小紧张,不过没关系,因为我面对的都是小白.好了废话少说,直接开始吧. 我主要说一下JAVA的发展和开发java的基本知识及JAVA的主要特性. 一.JAVA的主要特性: 1. 一方面 ...
- Apache Poi实现excel解析
一.说明 1.本文通过使用 poi 工具解析 excel 表格数据,实现导入导出 2.excel目前有两种格式 2003版本的 excel.xls 与 2007版本的 excel.xlsx ,注意两种 ...