java定义枚举并赋值_java中枚举的特性是什么?如何赋值?

上次已经为大家介绍过java枚举的概念是什么的主要内容了。今天再来为大家介绍一些相关的知识,也是关于java枚举的一些内容,也就是它的特性以及如何赋值,一起来了解一下吧。

首先说一下,java中枚举的特性是什么?

枚举的特性,归结起来就是一句话:

除了不能继承,基本上可以将enum看做一个常规的类。但是这句话需要拆分去理解。

1.我们都知道,枚举是可以添加方法的,枚举值默认为从0开始的有序数值 。那么问题来了:如何为枚举显示的赋值。

Java不允许使用=为枚举常量赋值

如果你接触过C/C++,你肯定会很自然的想到赋值符号= 。在C/C++语言中的enum,可以用赋值符号=显示的为枚举常量赋值;但是, Java语法中却不允许使用赋值符号=为枚举常量赋值。

例:C/C++语言中的枚举声明,代码如下所示:typedef enum

{

ONE = 1

, TWO

, THREE = 3

, TEN = 10

}

Number;

枚举可以添加普通方法、静态方法、抽象方法、构造方法

Java虽然不能直接为实例赋值,但是它有更优秀的解决方案:为enum添加方法来间接实现显示赋值。

创建enum时,可以为其添加多种方法,甚至可以为其添加构造方法。

另外,注意一个细节:如果要为enum定义方法,那么必须在enum的最后一个实例尾部添加一个分号。此外,在enum中,必须先定义实例,不能将字段或方法定义在实例前面。否则,编译器会报错。

举例说明:全面展示如何在枚举中定义普通方法、静态方法、抽象方法、构造方法。代码如下所示:public enum ErrorCode

{

OK(0)

{

public String getDescription()

{

return "成功";

}

}

, ERROR_A(100)

{

public String getDescription()

{

return "错误A";

}

}

, ERROR_B(200)

{

public String getDescription()

{

return "错误B";

}

};

private int code;

// 构造方法:enum的构造方法只能被声明为private权限或不声明权限

private ErrorCode(int number)

{ // 构造方法

this.code = number;

}

public int getCode()

{ // 普通方法

return code;

} // 普通方法

public abstract String getDescription(); // 抽象方法

public static void main(String args[])

{ // 静态方法

for (ErrorCode s: ErrorCode.values())

{

System.out.println("code: " + s.getCode() + ", description: " + s.getDescription());

}

}

}

注:上面的例子并不可取,仅仅是为了展示枚举支持定义各种方法。下面是一个简化的例子

举例说明:一个错误码枚举类型的定义

本例和上例的执行结果完全相同。代码如下所示:public enum ErrorCodeEn

{

OK(0, "成功")

, ERROR_A(100, "错误A")

, ERROR_B(200, "错误B");

ErrorCodeEn(int number, String description)

{

this.code = number;

this.description = description;

}

private int code;

private String description;

public int getCode()

{

return code;

}

public String getDescription()

{

return description;

}

public static void main(String args[])

{ // 静态方法

for (ErrorCodeEn s: ErrorCodeEn.values())

{

System.out.println("code: " + s.getCode() + ", description: " + s.getDescription());

}

}

}

2.枚举可以实现接口

enum可以像一般类一样实现接口。

同样是实现上一节中的错误码枚举类,通过实现接口,可以约束它的方法。代码如下所示:public interface INumberEnum

{

int getCode();

String getDescription();

}

public enum ErrorCodeEn2 implements INumberEnum

{

OK(0, "成功")

, ERROR_A(100, "错误A")

, ERROR_B(200, "错误B");

ErrorCodeEn2(int number, String description)

{

this.code = number;

this.description = description;

}

private int code;

private String description;

@Override

public int getCode()

{

return code;

}

@Override

public String getDescription()

{

return description;

}

}

3.枚举不可以继承。

enum不可以继承另外一个类,当然,也不能继承另一个enum 。

因为enum实际上都继承自 java.lang.Enum类,而Java不支持多重继承,所以enum不能再继承其他类,当然也不能继承另一个enum。

总的来说java中枚举的特性还是很简单易懂的,这也不需要花费太多的时间去理解这个知识点。java中的知识还是非常丰富的,想要了解更多java基础知识,敬请关注奇Q工具网。

推荐阅读:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值