首页 > 编程语言 >java定义枚举并赋值_java中枚举的特性是什么?如何赋值?

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

时间:2023-04-28 10:45:10浏览次数:47  
标签:java String enum 枚举 public 赋值

java定义枚举并赋值_java中枚举的特性是什么?如何赋值?
原文链接:https://blog.csdn.net/weixin_32821643/article/details/114441841

上次已经为大家介绍过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工具网。

推荐阅读:

标签:java,String,enum,枚举,public,赋值
From: https://www.cnblogs.com/sunny3158/p/17361257.html

相关文章

  • JAVA学习笔记随记2(面向对象中级)
    现在开始学习一些java面向对象中不太容易的东西了,加油吧!(0^_^0)首当其冲的便是包的感念和使用。包包的出现其实是为了更好的管理类,其本质就是一些文件夹和目录,同名的类不能同时出现,但如果两个同名的类在不同的包下则可以共存。相当于给每个类分配了一个地址,虽然类名是一样的,......
  • 面试官:说说你对Java异常的理解
    关注“Java后端技术全栈”回复“000”获取大量电子书背景不管是工作中还是面试中,异常这一块还是非常重要的。作为Java开发人员来说,学会如何处理异常,哪些异常必须自己处理,哪些异常可以往外抛等等,这些都是必需品。生活总有你意想不到的惊喜和意外,我们的code也是一样。异常不懂,佛祖也......
  • (五) Java变量与数据类型
    目录Java变量Java数据类型基本数据类型整数类型浮点(小数)类型字符型整型细节引用类型Java变量需要先声明,再赋值inta;intb=10;Java数据类型Java数据类型分为两大类:基本数据类型,引用类型基本数据类型基本数据类型有8种,其中6种数值型[byte,short,int,long......
  • 基于Java开发的数字知识库,支持全文检索、知识图谱和工作流审批,太强大了
    一、项目介绍一款全源码,可二开,可基于云部署、私有部署的企业级知识库云平台,应用在需要进行常用文档整理、分类、归集、检索的地方,适合知识密集型单位/历史文档丰富的单位,或者大型企业、集团。为什么建立知识库平台?二、项目所用技术springboot+vue+tinyMce+activiti+elastics......
  • 【策略设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介策略模式(StrategyPattern)属于行为型设计模式。将每一个算法封装到具有共同接口的独立类中,根据需要来绑定策略,使得具体实现和策略解耦。当你想使用对象中各种不同的算法变体,使用if...else所带来的复杂和难以维护,可使用策略模式。或者当有许多相同类,它们仅在执行某些行为时......
  • 递归实现三类枚举
    ​1.递归实现组合类枚举组合类枚举:从n中选s个数的所有组合n=0m=0defdfs(u:int,s:int,state:int):ifs==m:foriinrange(0,n):ifstate>>i&1:print(i+1,end='')print(""......
  • JAVA面向对象程序设计_PTA题目集04-06总结分析
    前言:JAVA_BLOG_PTA题目集4-6_总结分析 题目集四:知识点:大体如预备知识,即:通过查询JavaAPI文档,了解Scanner类中nextLine()等方法、String类中split()等方法、Integer类中parseInt()等方法的用法,了解LocalDate类中of()、isAfter()、isBefore()、until()等方法的使用规则,了解Chro......
  • js javascript js隐藏页面上有id的控件,隐藏页面上无控件包含的文字,控制页面控件属性
    1.隐藏页面上有id的控件varinput=document.getElementsByTagName("input");//获取页面所有inputfor(vari=0;i<input.length;i++){if(input.item(i).id.indexOf("txt")>=0)//判断input的id中是否包含txt字符串{......
  • java方法的内存及练习
    方法的内存一、方法调用的基本内存原理:Java内存分配栈:方法运行时使用的内存方法进栈运行,运行完毕就出栈堆:newl出来的,都在堆内存中开辟了一个小空间方法区:存储可以运行的class文件本地方法栈:JVM在使用操作系统功能的时候使用和我们开发无关寄存器:给CPU使用和......
  • Java-Day-16( 常用类 )
    Java-Day-16常用类包装类(Wrapper)针对八种基本数据类型定义相应的引用类型——包装类,有了类的特点,就可以调用类中的方法基本数据类型包装类booleanBooleancharCharacterbyteByteshortShortintIntegerlongLongfloatFloatdouble......