Java中的枚举Day0817

枚举是实例数量已经固定的类

[public]  enum 枚举名

{

    //第一行列出所有实例 ----枚举以后就只能用这些实例

    //同样可以定义类的五大成员

}

与普通类的语法区别:

- 枚举默认已经集成了Enum类(Object的子类),因此枚举不能继承其他类。

- 枚举类默认要么是final类,要么是抽象类。

如果枚举类没有抽象方法,系统自动添加final;如果添加了抽象方法,系统自动添加abstract

注:abstract|final 是隐式添加的,不允许开发者显示添加

- 枚举类的构造器只能用private修饰,构造器不写修饰符(自动添加private)

public enum Season
{
	SPRING,SUMMER,AUTUMN,WINTER;
	int age = 2 ;
	Season()
	{
	}
	public void info()
	{
		System.out.println("info方法");
	}
	// 内部接口也是可以有的
	public interface InnerInterface
	{

	}
	static public void main(String... args) 
	{
		System.out.println("Hello World!");
	}
}

用 javap -c Season 指令得到如下结果

Compiled from "Season.java"
public final class Season extends java.lang.Enum<Season> {
  public static final Season SPRING;

  public static final Season SUMMER;

  public static final Season AUTUMN;

  public static final Season WINTER;

  int age;

  public static Season[] values();// 该方法返回所有枚举实例:SPRING,SUMMER,AUTUMN,WINTER;
    Code:
       0: getstatic     #1                  // Field $VALUES:[LSeason;
       3: invokevirtual #2                  // Method "[LSeason;".clone:()Ljava/lang/Object;
       6: checkcast     #3                  // class "[LSeason;"
       9: areturn

  public static Season valueOf(java.lang.String);// 该方法根据枚举名返回枚举实例
    Code:
       0: ldc           #4                  // class Season
       2: aload_0
       3: invokestatic  #5                  // Method java/lang/Enum.valueOf:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
       6: checkcast     #4                  // class Season
       9: areturn

  public void info();
    Code:
       0: getstatic     #8                  // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #9                  // String info方法
       5: invokevirtual #10                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       8: return

  public static void main(java.lang.String...);
    Code:
       0: getstatic     #8                  // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #11                 // String Hello World!
       5: invokevirtual #10                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       8: return

  static {};
    Code:
       0: new           #4                  // class Season
       3: dup
       4: ldc           #12                 // String SPRING
       6: iconst_0
       7: invokespecial #13                 // Method "<init>":(Ljava/lang/String;I)V
      10: putstatic     #14                 // Field SPRING:LSeason;
      13: new           #4                  // class Season
      16: dup
      17: ldc           #15                 // String SUMMER
      19: iconst_1
      20: invokespecial #13                 // Method "<init>":(Ljava/lang/String;I)V
      23: putstatic     #16                 // Field SUMMER:LSeason;
      26: new           #4                  // class Season
      29: dup
      30: ldc           #17                 // String AUTUMN
      32: iconst_2
      33: invokespecial #13                 // Method "<init>":(Ljava/lang/String;I)V
      36: putstatic     #18                 // Field AUTUMN:LSeason;
      39: new           #4                  // class Season
      42: dup
      43: ldc           #19                 // String WINTER
      45: iconst_3
      46: invokespecial #13                 // Method "<init>":(Ljava/lang/String;I)V
      49: putstatic     #20                 // Field WINTER:LSeason;
      52: iconst_4
      53: anewarray     #4                  // class Season
      56: dup
      57: iconst_0
      58: getstatic     #14                 // Field SPRING:LSeason;
      61: aastore
      62: dup
      63: iconst_1
      64: getstatic     #16                 // Field SUMMER:LSeason;
      67: aastore
      68: dup
      69: iconst_2
      70: getstatic     #18                 // Field AUTUMN:LSeason;
      73: aastore
      74: dup
      75: iconst_3
      76: getstatic     #20                 // Field WINTER:LSeason;
      79: aastore
      80: putstatic     #1                  // Field $VALUES:[LSeason;
      83: return
}

String name():该方法返回枚举实例的名字。

int ordinal():该方法返回枚举实例的序号(从零开始)。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值