枚举:enum
枚举
所谓枚举就是指定好取值范围,所有内容只能从指定范围取得。
例如,想定义一个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的更多相关文章
- MySQL字段之集合(set)枚举(enum)
MySQL字段之集合(set)枚举(enum) (2008-12-23 13:51:23) 标签:it 分类:MySQL 集合 SET mysql> create table jihe(f1 ...
- 枚举 enum
typedef enum : NSUInteger { <#MyEnumValueA#>, <#MyEnumValueB#>, <#MyEnumValueC#>, ...
- 枚举enum学习小记
参考文献: [1]C++程序设计语言(特别版), 裘宗燕译, 机械工业出版社 [2]C++ Primer (3rd Ed.), S.B. Lippman and J. Lajoie, 人民邮电出版社 ...
- Java 枚举(enum) 详解7种常见的用法
Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...
- Python 枚举 enum
Python 枚举 enum enum 标准模块在 3.4 版本才可以使用,3.3 以下版本需要独立安装:https://pypi.python.org/pypi/enum34#downloads,官 ...
- 【转】结构struct 联合Union和枚举Enum的细节讨论
结构struct 联合Union和枚举Enum的细节讨论 联合(Union)是一种构造数据类型,它提供了一种使不同类型数据类型成员之间共享存储空间的方法,同时可以实现不同类型数据成员之间的自动类型转换 ...
- 枚举Enum和常量0之间的恩怨
1,任何为0的常量表达式都能隐式的转换成枚举Enum. 对于这一点,在程序中没少吃苦头.特别是对于函数重载的情况,往往让人一头雾水. 看看下面的代码(摘自MSDN),你能猜到输出吗? public e ...
- C++和Java中枚举enum的用法
在C++和java中都有枚举enum这个关键字,但是它们之间又不太一样.对于C++来说,枚举是一系列命名了的整型常量,而且从枚举值转化为对应的整型值是在内部进行的.而对于Java来说,枚举更像一个类的 ...
- 【转】枚举enum学习小记
原帖: http://hi.baidu.com/yuleishou/item/caacae872190031ec216272f 表示在vs2008下实验了一下,有些东西和原帖的还是不一样的,都贴在这里 ...
- 枚举类型与位域枚举Enum
一.概述 定义一个值类型,其中包含固定值集合.枚举类型变量可以是此集合中的任意一个或多个值.枚举使用enum关键字来声明,与类同级.枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符.枚 ...
随机推荐
- .net点选验证码实现思路分享
哈哈好久没冒泡了,最进看见点选验证码有点意思,所以想自己写一个. 先上效果图 如果你被这个效果吸引了就请继续看下去. 贴代码前先说点思路: 1.要有一个汉字库,并按字形分类.(我在数据库里是安部首分类 ...
- document.documentElement.clientHeight 与 document.body.clientHeight(杜绝千篇一律的抄袭!!)
document.documentElement.clientHeight 与 document.body.clientHeight用来获取页面可视高度我觉得有点问题.这两个应该不是一个东西. 页面中 ...
- UIViewController生命周期-完整版
一.UIViewController 的生命周期 下面带 (NSObject)的方法是NSObject提供的方法.其他的都是UIViewController 提供的方法. load (NSObje ...
- 让kindeditor显示高亮代码
kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: ...
- kafka配置与使用实例
kafka作为消息队列,在与netty.多线程配合使用时,可以达到高效的消息队列
- bash字符串操作
参考 http://www.cnblogs.com/chengmo/archive/2010/10/02/1841355.html 问题:bash怎么提取字符串的最后一位?例如python中strin ...
- 【微信小程序开发】之如何获取免费ssl证书【图文步骤】
微信小程序要求所有网络请求都走ssl加密,因此我们开发服务端接口需要配置为https 这篇文章介绍一下如何 在 startssl 申请一个免费的ca证书. 1. 打开网站 https://www.s ...
- java web学习总结(五) -------------------servlet开发(一)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- SAP CRM 将组件整合至导航栏中
到现在,我们已经可以让组件独立地显示.我们只是运行它.让它显示在Web UI中.让我们把组件整合进导航栏,使我们可以在正常登录Web UI时访问它. 步骤一: 为你的UI组件主窗体创建一个内向插件. ...
- nexus 社区版3.0.2部署、访问
下载nexus社区办(oss): https://www.sonatype.com/download-oss-sonatype 目前最新版本 nexus-3.0.2-02-win64.zip nex ...