在C/C++中枚举是一种构造数据类型 ,在java中枚举的实质是一个类 但是默认是没有构造方法的 但是我们可以为其添加构造方法 但是必须是私有的 .方法列表要在元素列表之下 。
其实在 Java类中定义枚举就是定义内部类 .
内部类和外部类 根据权限的不同 访问修饰符也不一样。
在c/c++中使用枚举
enum WeekDay={Mon,Tue,Wed,Thi,Fri,Sat,Sun} ;
在Java中
public enum WeekDay //枚举其实就一个类 也有方法
{
MON ,TUS,WED ,THI,FRI,SAT,SUN ;//可以加;也可以不加
}
1、
我们可以在Main方法中对Java中的枚举进行如下操作
WeekDay day=WeekDay.MON ;
System.out.println(day); //自动重载了toString()方法
System.out.println(day.name());//输出枚举对象的名字
System.out.println(day.ordinal());//输出在枚举中的顺序基于0
System.out.println(WeekDay.valueOf("SAT").toString()); //通过传递一个参数字符串来构造一个对象静态方法 我们在网页提交数据的时候 提交的是字符串我们可以在本地
System.out.println(WeekDay.values().length);//静态方法获得一个枚举的长度 通过字符处啊构造对象
2、 我们然后修改 枚举的定义如下
public enum WeekDay //枚举其实就一个类 也有方法
{
MON(1),TUS,WED(3),THI,FRI,SAT,SUN ;//可以加;也可以不加
private WeekDay(){System.out.println("不带参数的构造方法!");}
private WeekDay(int i){System.out.println("带参数的构造方法 !");}
}
只要程序一运行构造函数就会调用 这是因为Java中的枚举元素 都会自动生成静态对象 所以在程序加载的时候构造函数便会被执行 。
如果我们想分别调用枚举的构造方法 ,那么我们只需要在枚举元素后面增加上相应的参数即可 。
一定要注意 枚举的构造函数 一定要是私有 。。枚举和类的声明是一样的 。。
3、
利用枚举实现 TrafficLamp转向灯 :
//枚举元素就是一个个 枚举类的实例 但是在这里我们对于枚举的元素 其实是外部类的子类 我们通过匿名内部类 来创建枚举对象 并且实现其抽象方法
public enum TrafficLamp
{
GREEN()
{
public TrafficLamp nextLamp()
{
return YELLOW ;
}
},YELLOW(){
public TrafficLamp nextLamp()
{
return TrafficLamp.RED ;
}
}
,RED(){
public TrafficLamp nextLamp()
{
return GREEN ;
}
} ;
public abstract TrafficLamp nextLamp() ;//定义一个抽象方法 那么这个类只能被继承了
}
在Main中调用
TrafficLamp tr=TrafficLamp.YELLOW ;
System.out.println(tr);
System.out.println(tr.nextLamp());
System.out.println(tr.nextLamp().nextLamp()); //到下一个转向灯
4、大家可能还听过 Singleton 也就是单例模式 这个单例模式要求 在程序的运行时候 一个程序的某个类 只允许产生一个 实例 那么 这个类就是一个单例类
在Java中 可以通过枚举 来实现单例模式 。也可以通过Java类来实现 ,其根本都是通过类来实现的,因为 枚举本来就是一个 特殊类 。
说白了单例模式 就是一个对象唯一的概念 。。。。
实现方法1 : 自己通过类来实现
package me.Test;
public class Singleton
{
private Singleton(){} //私有构造方法 那么不能直接产生实例对象
private static Singleton obj=null; //静态私有成员
public Singleton getSingleton()
{
if(obj==null)
obj= new Singleton() ;
return obj ;
}
}
实现方法2 : 通过枚举进行单例模式
看下面枚举是不是很方便呢 简单的声明就实现了对象的唯一
enum SingletonEnum
{
SingleObject ; //枚举类型构造函数必须为 private 并且元素是静态的 定义完 枚举就可以使用
}
分享到:
相关推荐
Java-设计模式-单例模式-实现源码(简单实现、双重检查锁、静态内部类、枚举类)
Java ---- enum --- 枚举类案例
一个简单的java工程,包含注释,一目了然,其中包含了单例模式的所有实现方式,懒汉式,饿汉式,双重校验,枚举,静态内部类等方式实现单例。
Java高新技术_java5的枚举的基本应用
通过Java语言,主要实现了六种单例的生成方法,包括懒汉式、饿汉式、双重校验锁、枚举、静态内部类,可以根据实际情况选择使用
本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)...进阶篇有反射、泛型、注解、网络编程、多线程、序列化、数据库、Servlet、JSP、XML解析、单例模式与枚举。本专栏主要为Java入门者提供实验参考。
饿汉模式、懒汉模式、DCL单例模式、枚举;不同情况下使用不同的单例创建模式
通过单例模式可以保证系统中,**应用该模式的这个类只有一个实例**。即一个类只有一个对象实例。 #### 单例设计模式实现步骤 1. 将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。 2. 在该类内部...
一个单例模式的晋级过程(饿汉-懒汉-DCL-IoDH-枚举) ...单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一
单例模式的七种实现方法以及分析,可以作文大作业提交 1.前言 4 1.1 课题的研究背景 4 1.2 课题主要研究目标 4 2.相关技术简介 4 2.1Java简介 4 2.2IDEA简介 4 3. 单例模式的7种实现方式 5 3.1饿汉式(使用静态常量...
主要介绍了 JAVA 枚举单例模式及源码分析的实例详解的相关资料,需要的朋友可以参考下
java基础,反射枚举基础,自己总结的笔记。
2019-11-24,单例模式,枚举方式实现单例模式 代码详解,注释通俗易懂,源码提供参考。下载之后未经许可,请勿乱传。
代码 基于0-1整数规划隐枚举法离散型优化问题代码代码 基于0-1整数规划隐枚举法离散型优化问题代码代码 基于0-1整数规划隐枚举法离散型优化问题代码代码 基于0-1整数规划隐枚举法离散型优化问题代码代码 基于0-1整数...
Java试题-1:交通灯枚举 典型的Java面试题 有关于枚举的应用及交通灯枚举的答案
JAVA的枚举实例以及应用
本源码由 springboot 开发,只有2个简单的文件(1是 枚举类单例,2是 controller请求测试类)。 主要测试了枚举类的饿汉式加载机制 / 单例机制。 代码中包含枚举类的基本使用,和完整的请求示例。 主要实现了枚举类...
深入分析java单例模式什么是单例模式单例模式的常见写法一、饿汉式单例优点缺点示例二、懒汉式单例示例1(普通写法)示例2(synchronized写法)示例3(DCL写法)示例4(内部类写法)三、注册式单例示例1(容器式)示例2(枚举式...
2020-4-10 java笔记 枚举类 2020-4-10 java 注解(Annotation) 2020-4-11 Java 集合 2020-4-15 java 泛型 2020-4-18 java IO流 2020-4-19 java 网络编程 2020-4-21 java反射 2020-4-22 java8 新特性 2020-4-27 单元...