java 枚举类小结 Enum
好久没有接触枚举类了,差不多都忘了,今天抽出个时间总结一下吧。说实话,枚举类确实能够给我们带来很大的方便。
说明:枚举类它约定了一个范围,可以理解成只可以生成固定的几个对象让外界去调用,故枚举类中的构造方法都是private类型的。进而求其次,究竟枚举类到底有何特殊之处呢?
呈上代码一览(本人也是java Android 领域的菜鸟,如有错误之处,希望大家能够给以指点)
/**
* 测试枚举类
* @author Administrator
* @Date 2015-8-3
*/
public class EnumTest {
public static void main(String[] args) {
Person person1 = Person.MAN;
System.out.println(person1);
Person.MAN.work();
Person.WOMEN.work(); }
//测试Person的values()方法
public static void testValues(){
Person []persons = Person.values();
for(Person p:persons){ System.out.println(p); } }
//测试Person的valuesof()方法
public static void testValuesOf(){
Person person2 = Person.valueOf("MAN");
System.out.println(person2);
}
}
/**
* 测试接口
* @author Administrator
* @Date 2015-8-3
*/
interface PersonExtends{
void work();
}
/**
* 枚举类
* @author Administrator
* @Date 2015-8-3
*/
enum Person implements PersonExtends{
MAN("zhangsan","12"){
public void work(){
System.out.println("能干体力活,承受得住重量");
} },WOMEN("lisi","13"){
public void work(){ System.out.println("职场白领居多,能者居之");
}
};
private String name;
private String age;
private Person(String name,String age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public void method(){
System.out.println("The person is liming");
}
@Override
public String toString() {
// TODO Auto-generated method stub
return super.toString();
}
@Override
public void work() {
// TODO Auto-generated method stub
System.out.println("男人和女人工作的强度不同");
} }
说明一下我以上代码的几个关键的因素:
1.以前不太明白枚举类中一开始的对象如何去写,其实很简单,只是原始类的缩写而已,注意枚举类默认继承了Enum类,所以不能再继承。看如下代码:
private final Person2 MAN = new Person2("zhangsan","12");
其实枚举类中的对象和这个写法是一样的,只不过在enum声明的类中不能够这么写。可以这样理解,既然枚举类已经限定了范围,只能在枚举类中new对象,故构造方法是private类型,外界也不允许修改,故它就是不变的,所以声明成为final类型,对象初始化,这点相信大家都知道的。然而在enum中,已经知道这种约定,所以enum类中不允许这样写,把默认的都删掉,有点类似接口中的final static 。所以就剩下MAN("zhangsan","12")。强调一点,枚举对象必须写在类的开头。
2.在测试枚举类中,引用枚举类的对象相信大家一看就能明白。还有两个方法说明一下,一是values方法,取得枚举类中定义的枚举类的对象,返回的是一个枚举类的集合。如上依次遍历。。。其次是valuesof方法,根据名字获取枚举类型的对象,强调一下,valuesof(String str)中的参数必须是枚举类中对象的名字,否则将会报异常。
今天有点晚了。。明天再做更新啦。。
java 枚举类小结 Enum的更多相关文章
- java枚举类(enum) 基础知识讲解
枚举类是在java 5后新增的,可以用于封装常量,并且还可以为常量的使用提供一些方法. 定义枚举类的语法: public enum EnumName{ 成员1(A,B...),成员2(A,B...), ...
- Java分享笔记:自定义枚举类 & 使用enum关键字定义枚举类
在JDK1.5之前没有enum关键字,如果想使用枚举类,程序员需要根据Java语言的规则自行设计.从JDK1.5开始,Java语言添加了enum关键字,可以通过该关键字方便地定义枚举类.这种枚举类有自 ...
- Java 枚举类
如果要定义一个枚举类: public enum Size { SAMLL, MEDIUM, LARGE, EXTRA, EXTRA_LARGE}; 实际上,这个声明定义的类型是一个类,它刚好有4个实例 ...
- Java 枚举类详解
1. 枚举类定义 在某些情况下,一个类的对象是有限而且固定的,比如季节类,它只有4个对象,这种实例有限而且固定的类,在Java里被称为枚举类. 2. 早期实现枚举的方式 public static f ...
- Java基础15:深入剖析Java枚举类
更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...
- Kotlin——中级篇(五):枚举类(Enum)、接口类(Interface)详解
在上一章节中,详细的类(class)做了一个实例讲解,提到了类(class)的实例化.构造函数.声明.实现方式.和Java中类的区别等.但是对于Kotlin中的类的使用还远远不止那些.并且在上文中提到 ...
- 夯实Java基础系列14:深入理解Java枚举类
目录 初探枚举类 枚举类-语法 枚举类的具体使用 使用枚举类的注意事项 枚举类的实现原理 枚举类实战 实战一无参 实战二有一参 实战三有两参 枚举类总结 枚举 API 总结 参考文章 微信公众号 Ja ...
- Java枚举类在生产环境中的使用方式
前言 Java枚举在项目中使用非常普遍,许多人在做项目时,一定会遇到要维护某些业务场景状态的时候,往往会定义一个常量类,然后添加业务场景相关的状态常量.但实际上,生产环境的项目中业务状态的定义大部 ...
- java 枚举类 enum 总结
枚举定义: enum是计算机编程语言中的一种数据类型.枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把这些量 ...
随机推荐
- docker rabbitmq
docker run -d --hostname my1 --name dome-rabbit -p 15673:5672 -p 15674:15672 -e RABBITMQ_ERLANG_COOK ...
- 关于java字符串编译优化问题
情景一:不好的字符串拼接习惯 起因是这样的:一个大牛在写了一篇关于java字符串优化问题的讲解,他提到:不要使用strObj+otherValue的方法将otherValue转换为字符串形式,因 ...
- Qt设置系统时间(使用SetSystemTime API函数)
大家都知道Qt中有QDateTime等有关时间与日期的类,类中包含很多成员函数,可以很方便的实现有关时间与日期的操作,比如:想要获得系统当前的时间与日期,可以调用currentDateTime(); ...
- JS实现页面回到顶部效果
[代码] <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- 20145211 《Java程序设计》实验报告三:敏捷开发与XP实践
实验内容 使用 git上传代码 使用 git相互更改代码 实现代码的重载 XP基础 XP核心实践 相关工具 一.git上传代码 这一部分是与我的partner合作的,详见他的博客- 20145326蔡 ...
- [LeetCode] Substring with Concatenation of All Words(good)
You are given a string, S, and a list of words, L, that are all of the same length. Find all startin ...
- Ioc-Autofac实现自动的注入
在开发过程中,最郁闷的莫过于当你新增一个Service时,你需要对该Service进行注册,有的是使用代码注入,有的是XML配置注入,不管是哪种类型的注入,经常会出现开发人员忘记注入的情况. 于是我试 ...
- iOS项目的目录结构和开发流程(Cocoa China)
目录结构 AppDelegate Models Macro General Helpers Vendors Sections Resources 一个合理的目录结构首先应该是清晰的,让人一眼看上去 ...
- html5头部说明
<!DOCTYPE html> <!-- 使用 HTML5 doctype,不区分大小写 --><html lang="zh-cmn-Hans"> ...
- Epoll模型详解
Linux 2.6内核中提高网络I/O性能的新方法-epoll I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数. 1.为什么select落后 首先,在Lin ...