枚举

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

例如,想定义一个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. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

  2. java字符乱码

    在java中处理字符时,经常会发生乱码,而主要出现的地方在读取文本文件时发生,或者是写入到文件中,在其他地方打开乱码. 如下例子: BufferedReader br = null; try { br ...

  3. css-父标签中的子标签默认位置

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  4. 【翻译】MongoDB指南/CRUD操作(三)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...

  5. 用scikit-learn学习DBSCAN聚类

    在DBSCAN密度聚类算法中,我们对DBSCAN聚类算法的原理做了总结,本文就对如何用scikit-learn来学习DBSCAN聚类做一个总结,重点讲述参数的意义和需要调参的参数. 1. scikit ...

  6. C#使用GET、POST请求获取结果

    C#使用GET.POST请求获取结果,这里以一个简单的用户登陆为例. 1. 使用GET请求获取结果 1.1 创建LoginHandler.aspx处理页面 protected void Page_Lo ...

  7. Nginx学习笔记--001-Nginx快速搭建

    Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗斯访问量第二的R ...

  8. 一个软件开发者的BPM之路

    我是小林,一名普通的软件工程师,从事BPM(业务流程管理)软件开发工作.我没有几十年的技术底蕴,无法像大牛们一样高谈阔论,品评BPM开发之道:也不是资深的流程管理专家,能与大家分析流程管理的时弊.我只 ...

  9. iOS微信第三方登录实现

    iOS微信第三方登录实现   一.接入微信第三方登录准备工作.移动应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统.在进行微信OAuth2.0授权登录接入之前,在微信开 ...

  10. kafka

    2016-11-13  20:48:43 简单说明什么是kafka? Apache kafka是消息中间件的一种,我发现很多人不知道消息中间件是什么,在开始学习之前,我这边就先简单的解释一下什么是消息 ...