导航:首页 > 编程语言 > java方法枚举

java方法枚举

发布时间:2022-12-30 02:53:46

‘壹’ java中的枚举应该怎样深刻理解

枚举是一种规范它规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int型参数可能带来的模糊概念 枚举像一个类,又像一个数组。

Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。

1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。

2.所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。

3.Enum默认实现了java.lang.Comparable接口。

4.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”.

5.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。

6.Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。

7.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。

‘贰’ Java语言中的枚举类型如何使用

Java语言中的枚举类型的使用方法如下:

用法一:常量;

publicenumColor{
RED,GREEN,BLANK,YELLOW
}

用法二:switch;

enumSignal{
GREEN,YELLOW,RED
}
publicclassTrafficLight{
Signalcolor=Signal.RED;
publicvoidchange(){
switch(color){
caseRED:
color=Signal.GREEN;
break;
caseYELLOW:
color=Signal.RED;
break;
caseGREEN:
color=Signal.YELLOW;
break;
}
}
}

用法三:向枚举中添加新方法;

publicenumColor{
RED("红色",1),GREEN("绿色",2),BLANK("白色",3),YELLO("黄色",4);
//成员变量
privateStringname;
privateintindex;
//构造方法
privateColor(Stringname,intindex){
this.name=name;
this.index=index;
}
//普通方法
publicstaticStringgetName(intindex){
for(Colorc:Color.values()){
if(c.getIndex()==index){
returnc.name;
}
}
returnnull;
}
//getset方法
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetIndex(){
returnindex;
}
publicvoidsetIndex(intindex){
this.index=index;
}
}

用法四:覆盖枚举的方法;

publicclassTest{
publicenumColor{
RED("红色",1),GREEN("绿色",2),BLANK("白色",3),YELLO("黄色",4);
//成员变量
privateStringname;
privateintindex;
//构造方法
privateColor(Stringname,intindex){
this.name=name;
this.index=index;
}
//覆盖方法
@Override
publicStringtoString(){
returnthis.index+"_"+this.name;
}
}
publicstaticvoidmain(String[]args){
System.out.println(Color.RED.toString());
}
}

用法五:实现接口;

publicinterfaceBehaviour{
voidprint();
StringgetInfo();
}
{
RED("红色",1),GREEN("绿色",2),BLANK("白色",3),YELLO("黄色",4);
//成员变量
privateStringname;
privateintindex;
//构造方法
privateColor(Stringname,intindex){
this.name=name;
this.index=index;
}
//接口方法
@Override
publicStringgetInfo(){
returnthis.name;
}
//接口方法
@Override
publicvoidprint(){
System.out.println(this.index+":"+this.name);
}
}

用法六:使用接口组织枚举。

publicinterfaceFood{
enumCoffeeimplementsFood{
BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
}
enumDessertimplementsFood{
FRUIT,CAKE,GELATO
}
}

以上就是Java语言中枚举类型的基本使用方法。

‘叁’ 怎么使用java中的枚举方法

怎么解释枚举呢。枚举的定义就是一个有限值的集合。一个枚举类型的变量它的值只可能是类型值中的一个。
所以Drection 是类型名,Drection drection 则是此类型的变量,变量的值应该是类型里边所列的值中的一个,如果单写个WEST跟本不知道它是什么,所以要加类名限定即Drection.WEST. 于是,对一个枚举变量赋值的样子就像这样。
if(drection==Drection.WEST) return true; String west="WEST"; drection.toString().equals(west) return true;

‘肆’ java枚举的几种用法

用法一:常量
在JDK1.5 之前,我们定义常量都是: public static fianl.... 。现在好了,
有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。
Java代码

public enum Color {
RED, GREEN, BLANK, YELLOW
}

用法二:switch
JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。
Java代码

enum Signal {
GREEN, YELLOW, RED
}
public class TrafficLight {
Signal color = Signal.RED;
public void change() {
switch (color) {
case RED:
color = Signal.GREEN;
break;
case YELLOW:
color = Signal.RED;
break;
case GREEN:
color = Signal.YELLOW;
break;
}
}
}

用法三:向枚举中添加新方法
如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。
Java代码
public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
// 普通方法
public static String getName(int index) {
for (Color c : Color.values()) {
if (c.getIndex() == index) {
return c.name;
}
}
return null;
}
// get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}

用法四:覆盖枚举的方法
下面给出一个toString()方法覆盖的例子。
Java代码

public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
//覆盖方法
@Override
public String toString() {
return this.index+"_"+this.name;
}
}

用法五:实现接口
所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。
Java代码

public interface Behaviour {
void print();
String getInfo();
}
public enum Color implements Behaviour{
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
//接口方法
@Override
public String getInfo() {
return this.name;
}
//接口方法
@Override
public void print() {
System.out.println(this.index+":"+this.name);
}
}

用法六:使用接口组织枚举
Java代码

public interface Food {
enum Coffee implements Food{
BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
}
enum Dessert implements Food{
FRUIT, CAKE, GELATO
}
}

private static void testImplementsInterface() {
for (Food.DessertEnum dessertEnum : Food.DessertEnum.values()) {
System.out.print(dessertEnum + " ");
}
System.out.println();
//我这地方这么写,是因为我在自己测试的时候,把这个coffee单独到一个文件去实现那个food接口,而不是在那个接口的内部。
for (CoffeeEnum coffee : CoffeeEnum.values()) {
System.out.print(coffee + " ");
}
System.out.println();
//搞个实现接口,来组织枚举,简单讲,就是分类吧。如果大量使用枚举的话,这么干,在写代码的时候,就很方便调用啦。
//还有就是个“多态”的功能吧,
Food food = Food.DessertEnum.CAKE;
System.out.println(food);
food = CoffeeEnum.BLACK_COFFEE;
System.out.println(food);
}

‘伍’ java枚举

枚举 一般就是能数得清的东西。像交通指示灯就只有三个颜色:黄、绿、红

这样有限的东西,如果我们写个类就显得很多余了,所以就有了枚举。在你写的枚举中 red、blue、black都是color中的一种。用枚举color来显示color有哪些。将其写在枚举color中。
调用red的时候就需要枚举名.变量(其实这里说red是变量是不合适的,只是为了方便理解。)变量和它的值是一样的。 所以输出的就是red了。

‘陆’ java枚举

这个枚举里面写了如下方法public
abstract
TrafficLamp
nextLamp();
以上为一个抽象方法,需要实现的,所以下面的RED有方法体(匿名类的概念),是为了实现抽象方法。
RED(30){
public
TrafficLamp
nextLamp(){
return
GREEN;
}
而30是传入int参数,因为下面写了有参的构造方法:
private
int
time;
private
TrafficLamp(int
time){this.time
=
time;
time=30这是RED的一个属性。
你可以把枚举看做一个类,而它的每个实例都是该类的对象,而且此对象是不可变的。

‘柒’ java枚举类型

java 枚举类型enum 的使用
最近跟同事讨论问题的时候,突然同事提到我们为什么java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?以前我们都是采用这种方式定义的,很少采用enum 定义,所以也都没有注意过,面对突入起来的问题,还真有点不太清楚为什么有这样的定义。既然不明白就抽时间研究下吧。
Java 中的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型。要了解枚举类型,建议大家先打开jdk 中的Enum类简单读一下,这个类里面定义了很多protected 方法,比如构造函数,如果要使用这些方法我们可以把枚举类型定义到当前类中。每个枚举类型,都有自己的名字和顺序,当我们输出一个枚举类型的时候,会输入枚举类型的name ,具体可以参考下面的例子。
一、 通常定义常量方法
我们通常利用public final static 方法定义的代码如下,分别用1 表示红灯,3 表示绿灯,2 表示黄灯。

package com.csdn.myEnum;
public class Light {
/* 红灯 */
public final static int RED =1;
/* 绿灯 */
public final static int GREEN =3;
/* 黄灯 */
public final static int YELLOW =2;
}

二、 枚举类型定义常量方法
枚举类型的简单定义方法如下,我们似乎没办法定义每个枚举类型的值。比如我们定义红灯、绿灯和黄灯的代码可能如下:

public enum Light {
RED , GREEN , YELLOW ;
}

我们只能够表示出红灯、绿灯和黄灯,但是具体的值我们没办法表示出来。别急,既然枚举类型提供了构造函数,我们可以通过构造函数和覆写toString方法来实现。首先给Light 枚举类型增加构造方法,然后每个枚举类型的值通过构造函数传入对应的参数,同时覆写toString 方法,在该方法中返回从构造函数中传入的参数,改造后的代码如下:

public enum Light {
// 利用构造函数传参
RED (1), GREEN (3), YELLOW (2);

// 定义私有变量
private int nCode ;

// 构造函数,枚举类型只能为私有
private Light( int _nCode) {
this . nCode = _nCode;
}

@Override
public String toString() {
return String.valueOf ( this . nCode );
}
}

三、 完整示例代码
枚举类型的完整演示代码如下:

package com.csdn.myEnum;

import java.util.EnumMap;
import java.util.EnumSet;

public class LightTest {

// 1. 定义枚举类型
public enum Light {
// 利用构造函数传参
RED (1), GREEN (3), YELLOW (2);

// 定义私有变量
private int nCode ;

// 构造函数,枚举类型只能为私有
private Light( int _nCode) {
this . nCode = _nCode;
}

@Override
public String toString() {
return String.valueOf ( this . nCode );
}
}

/**
* @param args
*/
public static void main(String[] args ) {

// 1. 遍历枚举类型
System. out .println( " 演示枚举类型的遍历 ......" );
testTraversalEnum ();

// 2. 演示 EnumMap 对象的使用
System. out .println( " 演示 EnmuMap 对象的使用和遍历 ....." );
testEnumMap ();

// 3. 演示 EnmuSet 的使用
System. out .println( " 演示 EnmuSet 对象的使用和遍历 ....." );
testEnumSet ();
}

/**
* 演示枚举类型的遍历
*/
private static void testTraversalEnum() {
Light[] allLight = Light.values ();
for (Light aLight : allLight) {
System. out .println( " 当前灯 name : " + aLight.name());
System. out .println( " 当前灯 ordinal : " + aLight.ordinal());
System. out .println( " 当前灯: " + aLight);
}
}

/**
* 演示 EnumMap 的使用, EnumMap 跟 HashMap 的使用差不多,只不过 key 要是枚举类型
*/
private static void testEnumMap() {
// 1. 演示定义 EnumMap 对象, EnumMap 对象的构造函数需要参数传入 , 默认是key 的类的类型
EnumMap<Light, String> currEnumMap = new EnumMap<Light, String>(
Light. class );
currEnumMap.put(Light. RED , " 红灯 " );
currEnumMap.put(Light. GREEN , " 绿灯 " );
currEnumMap.put(Light. YELLOW , " 黄灯 " );

// 2. 遍历对象
for (Light aLight : Light.values ()) {
System. out .println( "[key=" + aLight.name() + ",value="
+ currEnumMap.get(aLight) + "]" );
}
}

/**
* 演示 EnumSet 如何使用, EnumSet 是一个抽象类,获取一个类型的枚举类型内容<BR/>
* 可以使用 allOf 方法
*/
private static void testEnumSet() {
EnumSet<Light> currEnumSet = EnumSet.allOf (Light. class );
for (Light aLightSetElement : currEnumSet) {
System. out .println( " 当前 EnumSet 中数据为: " + aLightSetElement);
}

}
}

执行结果如下:

演示枚举类型的遍历 ......
当前灯 name : RED
当前灯 ordinal : 0
当前灯: 1
当前灯 name : GREEN
当前灯 ordinal : 1
当前灯: 3
当前灯 name : YELLOW
当前灯 ordinal : 2
当前灯: 2
演示 EnmuMap 对象的使用和遍历 .....
[key=RED,value= 红灯 ]
[key=GREEN,value= 绿灯 ]
[key=YELLOW,value= 黄灯 ]
演示 EnmuSet 对象的使用和遍历 .....
当前 EnumSet 中数据为: 1
当前 EnumSet 中数据为: 3
当前 EnumSet 中数据为: 2

四、 通常定义常量方法和枚举定义常量方法区别
以下内容可能有些无聊,但绝对值得一窥
1. 代码:
public class State {
public static final int ON = 1;
public static final Int OFF= 0;
}

有什么不好了,大家都这样用了很长时间了,没什么问题啊。
首先,它不是类型安全的。你必须确保是int
其次,你还要确保它的范围是0 和1
最后,很多时候你打印出来的时候,你只看到 1 和0 ,

但其没有看到代码的人并不知道你的企图,抛弃你所有旧的public static final 常量
2. 可以创建一个enum 类,把它看做一个普通的类。除了它不能继承其他类了。(java 是单继承,它已经继承了Enum),
可以添加其他方法,覆盖它本身的方法
3. switch() 参数可以使用enum 了
4. values() 方法是编译器插入到enum 定义中的static 方法,所以,当你将enum 实例向上转型为父类Enum 是,values() 就不可访问了。解决办法:在Class中有一个getEnumConstants() 方法,所以即便Enum 接口中没有values() 方法,我们仍然可以通过Class 对象取得所有的enum 实例
5. 无法从enum 继承子类,如果需要扩展enum 中的元素,在一个接口的内部,创建实现该接口的枚举,以此将元素进行分组。达到将枚举元素进行分组。
6. 使用EnumSet 代替标志。enum 要求其成员都是唯一的,但是enum 中不能删除添加元素。
7. EnumMap 的key 是enum ,value 是任何其他Object 对象。
8. enum 允许程序员为eunm 实例编写方法。所以可以为每个enum 实例赋予各自不同的行为。
9. 使用enum 的职责链(Chain of Responsibility) . 这个关系到设计模式的职责链模式。以多种不同的方法来解决一个问题。然后将他们链接在一起。当一个请求到来时,遍历这个链,直到链中的某个解决方案能够处理该请求。
10. 使用enum 的状态机
11. 使用enum 多路分发

‘捌’ java枚举类型

InitParameter是在web.xml中配置的Servlet初始参数,采用:
<init-param></init-param>形式写入。
Enumeration是一个枚举接口,遍历枚举就能得到init-param参数名称,如:
while
(enums.hasMoreElements
())
{
String
paramName
=
(String)
enums.nextElement
()
;
String
paramValue
=
getInitParameterValue
(paramName)
;
...
other
process
here..
}

‘玖’ java中的枚举是什么意思

Java的Enumeration(枚举,注释②)便是具有这些限制的一个反复器的例子。除下面这些外,不可再用它做其他任何事情:
(1)
用一个名为elements()的方法要求集合为我们提供一个Enumeration。我们首次调用它的nextElement()时,这个Enumeration会返回序列中的第一个元素。
(2)
用nextElement()获得下一个对象。
(3)
用hasMoreElements()检查序列中是否还有更多的对象。
②:“反复器”这个词在C++和OOP的其他地方是经常出现的,所以很难确定为什么Java的开发者采用了这样一个奇怪的名字。Java
1.2的集合库修正了这个问题以及其他许多问题。

‘拾’ java中的枚举类型指的是什么啊

在Java中,枚举类型本质上其实就是一个类,枚举中的常量都是该枚举类型的实例。虽然枚举类型有一些限制,比如不能再派生出子枚举类型,不能调用构造函数,不过我们仍然可以在枚举类型中定义构造函数、字段和方法

阅读全文

与java方法枚举相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:962
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:144
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:736
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:484
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:381
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:349
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:892
app转账是什么 浏览:163