ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java枚举类的定义及常用方法

2021-04-18 18:02:53  阅读:171  来源: 互联网

标签:java 定义 Color System 枚举 println col out


java枚举类的定义及常用方法

枚举类是Java语言列举类中普通基础的一个类。定义和class类的区别是用关键字enum修饰。定义格式如下:

     {ClassModifierenum TypeIdentifier [ClassImplementsEnumBody

ClassModifier 默认为public,

TypeIdentifier 实际为枚举类的类名 

 

 EnumBody 即为枚举类的内容。

body里边可以自定义方法。

关于文档中的构造器定义有如下需注意的地方:

1.构造器方法只能私有。如果没有显示声明默认也为私有。It is a compile-time error if a constructor declaration in an enum declaration is public or protected 

2.构造器方法中不能有调用父类方法的语句。It is a compile-time error if a constructor declaration in an enum declaration contains a superclass constructor invocation statement

3.文档中声明的 (String name,int ordinal)的构造方法是隐式声明 和编译器有很大关系。

 

代码如下:

 1 enum Color {
 2      RED, GREEN, BLACK;
 3 
 4     /**
 5      * 自有实例方法
 6      */
 7 
 8     protected void saySomething(Color col) {
 9         System.out.println("调用到我了:  " + col.toString() );
10     }
11 
12      /**
13       * 自有静态方法
14       */
15     public  static void directCall() {
16         System.out.println("调用到静态方法了");
17     }
18 
19 }

测试方法:

class Test {

       public static void main(String[] args) {

           System.out.println(Arrays.toString(Color.values())); //  [RED, GREEN, BLUE]

           System.out.println(Color.values()[0].getClass()); //  class com.ioc.test.enums.Color

           System.out.println(Color.valueOf("RED")); //  RED 返回枚举值的字符串形式


           for (Color col: Color.values()) {
               System.out.println(col.ordinal()); // 返回每个枚举值在枚举中声明的下标
               col.saySomething(col); // 调用枚举类自己的实例方法
           }

          Color.directCall();


       }

输出结果:

 valueOf(): 返回枚举类里每个属性的字符串值

values(): 返回枚举类的实例。该方法由构造器提供,文档中并未列出。

 ordinal() : 该方法由final修饰,只能由类的实例调用,返回每个枚举值的下标

标签:java,定义,Color,System,枚举,println,col,out
来源: https://www.cnblogs.com/wuyaguoke/p/14673908.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有