小小的枚举类,让代码变得更简洁

举报
周杰伦本人 发表于 2022/11/29 23:30:39 2022/11/29
【摘要】 小小的枚举类,让代码变得更简洁 枚举类的遍历 枚举类的values()方法来自哪里 总结 小小的枚举类,让代码变得更简洁坚持原创,写好每一篇文章Java中的枚举类我们有时候把它当成一个字典来使用,它简化了代码,下面我们就看一看枚举类枚举类使用关键字enum来定义,我们定义的枚举类都继承Enum类。我们都知道,java中的类只能有一个父类,所以我们定义的所有枚举类不能继承其他类了。 枚举类的...

小小的枚举类,让代码变得更简洁

坚持原创,写好每一篇文章

Java中的枚举类我们有时候把它当成一个字典来使用,它简化了代码,下面我们就看一看枚举类

枚举类使用关键字enum来定义,我们定义的枚举类都继承Enum类。我们都知道,java中的类只能有一个父类,所以我们定义的所有枚举类不能继承其他类了。

枚举类的遍历

枚举类有个values()方法,这个方法可以获取到所有的枚举实例,通过这个方法可以进行遍历枚举类

enum Xpp { CODE, SLEEP, EAT }
for(Xpp x : Xpp.values()) {
  System.out.println(x.ordinal());
  System.out.println(x.getDeclaringClass());
  Xpp xpp = Enum.valueOf(Xpp.class, "CODE");
}

ordinal()方法是获取序列号,从0开始。

getDeclaringClass()方法是获取枚举实例所属的类,这里返回的是class Xpp,由此可以看出,枚举类也是类,它支持关键字比较特殊而已。因此枚举类中可以定义方法、属性等等,它和其他的类没有什么区别,枚举类中也可以添加main()方法,枚举类还可以实现接口

第三行代码调用了枚举类的valueOf()方法,通过调用形式我们就可以看出,它是一个静态方法,它会根据名称返回枚举类中的实例,如果实例不存在的话就抛出异常。

枚举类的values()方法来自哪里

我们上面的代码中表示使用枚举类的values方法可以获取枚举类的所有实例,但从它的父类中看,父类Enum类也没有values()方法的定义,那么它来自哪里呢?它其实是编译器为枚举类添加的静态方法。

总结

这篇文章我们简单了解了枚举类的使用,枚举类和我们的普通的类没有什么不同,只是它的关键字是enum,它继承了Enum类就不能继承别的类,但它可以定义方法和实现接口,重点介绍了一下values()方法的使用,在进行枚举类遍历的时候可以使用这个方法,这个方法是编译器为枚举类添加的方法。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。