java之枚举

枚举类简介:

Java5新增了一个enum关键字(它与class、interface关键字的地位相同),用以定义枚举类。枚举类也是一种特殊的类,所以也具有和类相同的变量和方法,也可以定义自己的构造器。

枚举类入门:

枚举类定义:

package com.alibaba.oop;

//定义了一个枚举类,
public enum EnumTest {
	
	//在第一行列出4个枚举实例
	SPRING,SUMMER,FALL,WINTER;

}

枚举类使用:

public class TestEnum{
	
	public void judge(EnumTest e) {
		
		//switch语句里的表达式可以是枚举值
		switch(e) {
			case SPRING:
				System.out.println("春暖花开");
				break;
			case SUMMER:
				System.out.println("夏日炎炎");
				break;
			case FALL:
				System.out.println("秋风飒飒");
				break;
			case WINTER:
				System.out.println("冬日雪飘");
				break;
		}
	}
	
	public static void main(String[] args) {
		
		//枚举类默认有一个value方法,返回该枚举类的所有实例
		for(EnumTest e:EnumTest.values()) {
			System.out.println(e);
		}
		
		//使用枚举类实例时,可通过EnumClass.variable来访问
		new TestEnum().judge(EnumTest.SPRING);
		
		
	}

}

运行结果:

SPRING
SUMMER
FALL
WINTER
春暖花开

枚举类与普通类的区别:

1、枚举类可以实现一个或多个接口,使用enum定义的枚举类默认继承了 java. lang Enum类,而不是默认继承 Object类,因此枚举类不能显式继承其他父类。其中 java. lang Enum类实现了java. lang Serializable和 java. lang. Comparable两个接口。 2、使用enum定义、非抽象的枚举类默认会使用 final修饰,因此枚举类不能派生子类。 3、枚举类的构造器只能使用 private访问控制符,如果省略了构造器的访问控制符,则默认使用private修饰;如果强制指定访问控制符,则只能指定 private修饰符。 4、枚举类的所有实例必须在枚举类的第一行显式列出,否则这个枚举类永远都不能产生实例。列出这些实例时,系统会自动添加 public static final修饰,无须程序员显式添加。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • servlet中的IllegalStateException

    本文链接:https://blog.csdn.net/u014427391/article/details/97397116

    用户1208223
  • 迭代器模式

    java中的迭代器想必大家都用过,但是大家知道他的性能以及实现原理吗?今天就来介绍一波 实际上foreach封装了迭代器,迭代器又封装了for循环,这样一来,...

    gfu
  • [译]区域设置更改和 AndroidViewModel 反面模式

    在 ViewModel 中,如果要公开来自资源(字符串、可绘制文件、颜色……)的数据,则必须着重考虑 ViewModel 对象而忽视配置更改,例如区域设置更改。...

    Android 开发者
  • QT QJsonObject 与 QJsonArray 中insert()方法 插入值的顺序问题

    本文链接:https://blog.csdn.net/acoolgiser/article/details/99442177

    acoolgiser
  • Netty系列之Netty线程模型

    最近发现极客时间的很多课程中,都穿插到了 Netty,可见 Netty 的重要性。基于此,给大家推荐一下这篇文章!

    业余草
  • 聊聊dubbo的ServiceBeanExportedEvent

    dubbo-2.7.3/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/conf...

    codecraft
  • 聊聊dubbo的ConfigChangeEvent

    dubbo-2.7.3/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/d...

    codecraft
  • 聊聊dubbo的DubboComponentScanRegistrar

    本文主要研究一下dubbo的DubboComponentScanRegistrar

    codecraft
  • Redis 与序列化

    序列化只是一种拆装组装对象的规则,那么这种规则肯定也可能有多种多样,比如现在常见的序列化方式有:JDK(不支持跨语言)、JSON、XML、Hessian、Kry...

    业余草
  • ASP.NET Core 中的 ServiceProvider

    在 ASP.NET Core 中,微软提供了一套默认的依赖注入实现,该实现对应的包为:Microsoft.Extensions.DependencyInject...

    Edison.Ma

扫码关注云+社区

领取腾讯云代金券