枚举

所谓枚举就是指定好取值范围,所有内容只能从指定范围取得。

例如,想定义一个color类,他只能有RED,GREEN,BLUE三种植。

使用简单类完成颜色固定取值问题。

1,就是说,一个类只能完成固定几个对象。

public enum Color{
RED,GREEN,BLUE ; // 定义三个枚举的类型
};

第一种方法:传统的设定固定值,通过使得构造方法私有化(使得值固定几个,不可从外部修改),通过单态模式。

代码如下:

package 类集;
class Color{
public static final Color RED = new Color("红色") ; // 定义第一个对象
public static final Color GREEN = new Color("绿色") ; // 定义第一个对象
public static final Color BLUE = new Color("蓝色") ; // 定义第一个对象
private String name ;
private Color(String name){
this.name = name ;
}
public void setName(String name){
this.name = name ;
}
public String getName(){
return this.name ;
}
public static Color getInstance(int i){
switch(i){
case 1:{
return RED ;
}
case 2:{
return GREEN ;
}
case 3:{
return BLUE ;
}default:{
return null ;
}
} }
};
public class test1{
public static void main(String args[]){
Color c1 = Color.RED ; // 取得红色
System.out.println(c1.getName()) ; // 输出名字
Color c2 = Color.getInstance(3) ; // 根据编号取得名字
System.out.println(c2.getName()) ;
}
};

输出结果:

红色
蓝色

此时程序限定了范围,达到了枚举的功能。

枚举定义格式如下:

 emum 枚举类型名称{
枚举对象1,枚举对象2,枚举对象3,,;
}

JAVA库中颜色枚举的定义如下:

public enum Color{
RED,GREEN,BLUE ; // 定义三个枚举的类型
};

使用:

package 类集;
import java.awt.Color;
public class test1{
public static void main(String args[]){
Color c = Color.BLUE ; // 取出蓝色
System.out.println(c) ;
}
};

因为枚举已经定义好了范围,所以可以使用foreach进行全部的输出,使用“枚举.VALUE()”的形式取得全部内容。

package 类集;
enum color1
{ red,black,green
}
public class test1{
public static void main(String args[]){
for(color1 c:color1.values())
{
System.out.println(c);
}
}
}

枚举还可以直接将内容在switch语句使用。

package 类集;
enum color1
{ red,black,green
}
public class test1{
public static void main(String args[]){
for(color1 c:color1.values())
{
print(c);
}
}
public static void print(color1 color){
switch(color){
case red:{
System.out.println("红颜色") ;
break ;
}
case black:{
System.out.println("黑颜色") ;
break ;
}
case green:{
System.out.println("绿颜色") ;
break ;
}
default:{
System.out.println("未知颜色") ;
break ;
}
}
}
};

总结:使用枚举可以限制取值的范围。

   可以使用enum定义取值。

枚举:enum的更多相关文章

  1. MySQL字段之集合(set)枚举(enum)

    MySQL字段之集合(set)枚举(enum) (2008-12-23 13:51:23) 标签:it  分类:MySQL 集合 SET mysql> create table jihe(f1 ...

  2. 枚举 enum

    typedef enum : NSUInteger { <#MyEnumValueA#>, <#MyEnumValueB#>, <#MyEnumValueC#>, ...

  3. 枚举enum学习小记

    参考文献: [1]C++程序设计语言(特别版), 裘宗燕译, 机械工业出版社 [2]C++ Primer (3rd Ed.), S.B. Lippman and J. Lajoie, 人民邮电出版社 ...

  4. Java 枚举(enum) 详解7种常见的用法

    Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...

  5. Python 枚举 enum

    Python 枚举 enum enum 标准模块在 3.4 版本才可以使用,3.3 以下版本需要独立安装:https://pypi.python.org/pypi/enum34#downloads,官 ...

  6. 【转】结构struct 联合Union和枚举Enum的细节讨论

    结构struct 联合Union和枚举Enum的细节讨论 联合(Union)是一种构造数据类型,它提供了一种使不同类型数据类型成员之间共享存储空间的方法,同时可以实现不同类型数据成员之间的自动类型转换 ...

  7. 枚举Enum和常量0之间的恩怨

    1,任何为0的常量表达式都能隐式的转换成枚举Enum. 对于这一点,在程序中没少吃苦头.特别是对于函数重载的情况,往往让人一头雾水. 看看下面的代码(摘自MSDN),你能猜到输出吗? public e ...

  8. C++和Java中枚举enum的用法

    在C++和java中都有枚举enum这个关键字,但是它们之间又不太一样.对于C++来说,枚举是一系列命名了的整型常量,而且从枚举值转化为对应的整型值是在内部进行的.而对于Java来说,枚举更像一个类的 ...

  9. 【转】枚举enum学习小记

    原帖: http://hi.baidu.com/yuleishou/item/caacae872190031ec216272f 表示在vs2008下实验了一下,有些东西和原帖的还是不一样的,都贴在这里 ...

  10. 枚举类型与位域枚举Enum

    一.概述 定义一个值类型,其中包含固定值集合.枚举类型变量可以是此集合中的任意一个或多个值.枚举使用enum关键字来声明,与类同级.枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符.枚 ...

随机推荐

  1. servlet文件下载

    创建web工程servlet,新建DownloadServlet.java package com.xmyself.servlet; import java.io.File; import java. ...

  2. 【探索】机器指令翻译成 JavaScript

    前言 前些时候研究脚本混淆时,打算先学一些「程序流程」相关的概念.为了不因太枯燥而放弃,决定想一个有趣的案例,可以边探索边学. 于是想了一个话题:尝试将机器指令 1:1 翻译 成 JavaScript ...

  3. 再讲IQueryable<T>,揭开表达式树的神秘面纱

    接上篇<先说IEnumerable,我们每天用的foreach你真的懂它吗?> 最近园子里定制自己的orm那是一个风生水起,感觉不整个自己的orm都不好意思继续混博客园了(开个玩笑).那么 ...

  4. Intellij idea添加单元测试工具

    1.idea 版本是14.0.0 ,默认带有Junit,但是不能自动生成单元测试,需要下载JunitGererator2.0插件 2.Settings -Plugins,下载 JunitGenerat ...

  5. $.type 怎么精确判断对象类型的 --(源码学习2)

    目标:  var a = [1,2,3];     console.log(typeof a); //->object     console.log($.type(a)); //->ar ...

  6. Nhibernate的Session管理

    参考:http://www.cnblogs.com/renrenqq/archive/2006/08/04/467688.html 但这个方法还不能解决Session缓存问题,由于创建Session需 ...

  7. .NET Core采用的全新配置系统[10]: 配置的同步机制是如何实现的?

    配置的同步涉及到两个方面:第一,对原始的配置文件实施监控并在其发生变化之后从新加载配置:第二,配置重新加载之后及时通知应用程序进而使后者能够使用最新的配置.要了解配置同步机制的实现原理,先得从认识一个 ...

  8. 创建 OVS Local Network - 每天5分钟玩转 OpenStack(129)

    上一节我们完成了 OVS 的准备工作,本节从最基础的 local network 开始学习.local network 不会与宿主机的任何物理网卡连接,流量只被限制在宿主机内,同时也不关联任何的 VL ...

  9. 解读发布:.NET Core RC2 and .NET Core SDK Preview 1

    先看一下 .NET Core(包含 ASP.NET Core)的路线图: Beta6: 2015年7月27日 Beta7: 2015年9月2日 Beta8: 2015年10月15日 RC1: 2015 ...

  10. 无法访问org.springframework.core.NestedRuntimeException 找不到org.springframework.core.NestedRuntimeException的类文件

    在学习springAOP时,出现如下异常: 无法访问org.springframework.core.NestedRuntimeException 找不到org.springframework.cor ...