zoukankan      html  css  js  c++  java
  • 枚举

    一,枚举类型的描述

           枚举类型是Java 5中新增的一部分,一般一个地方要取固定个数的值的时候,可以将其定义成枚举类型。因为对于枚举类型来说,除了刚开始定义的那几个对象(自己给出对象的名字,JVM生成对象),之后是不能在通过new产生对象了,这是因为在定义枚举时,其构造函数被默认设置之成私有的。即使使用反射,调用Constructor的 newInstance()方法,也无法产生对象,因为newInstance()方法也在其方法体中对枚举类型进行判断设置。所以后面只能通过 (枚举类型.对象名)获取其在开始定义的那几个固定的对象。

          创建一个枚举类的时候默认继承Enum,所以无法再继承其他的类,但是可以实现多个接口,且编译器编译的时候会将枚举类标记为final所以也不会被继承。

         注意在枚举类型中定义对象时,必须要放在最前面,否则编译出错,当只定义了对象没有定义变量和方法时,最后一个对象后面的分号是可以省略的。

    代码举例:

     1 enum Way{   //与类相似,类是用class定义,枚举是用enum定义
     2     UP(10),DOWN,RIGHT,LIFT;   //定义对象,注:必须要大写
     3     private int data;    //定义变量
     4     private Way(){    //默认构造函数 注:枚举类型的构造函数默认是私有的
     5         System.out.println("构造函数");
     6     }
     7     private Way(int data){   //带参构造函数  注:枚举类型的构造函数默认是私有的
     8     this.data=data;
     9     }
    10     public void show(){   //方法
    11         System.out.println( this.data);
    12     }
    13 }
    14 public class 枚举 {
    15     public static void main(String[] args) throws Exception {
    16         Way way1=Way.UP;    //不能new对象,只能通过 枚举类型. 调用开始定义的那几个固定的对象
    17         way1.show(); 
    18     }
    19 }

     二,枚举类常用的方法


    • name:获取某个实例声明时的名称
    • ordinal:获取某个实例在枚举类中声明的序号(从0开始)
    • compareTo:通过实例在枚举类中的声明顺序进行比较大小(默认实现了Comparable接口)
    • getDeclaringClass:返回某个实例的Class对象
    • valueOf:Enum中的方法需要传两个参数一个是枚举类的Class对象一个是实例的名称,返回该实例对象
    • equal:比较是否是同一个对象,即使用‘==’比较
    • toString:返回实例的名称
    1         System.out.println(way1.name());
    2         System.out.println(way1.ordinal());  //得到声明顺序
    3         System.out.println(way2.ordinal());
    4         System.out.println(way1.compareTo(way2));  //比较的是声明顺序,即下标
    5         System.out.println(way1.getDeclaringClass());
    6         System.out.println(way1.equals(way1));  //比较的是两个对象是否是同一个
    7         System.out.println(way1.toString());

    结果:

          

  • 相关阅读:
    基于消息摆渡节点的DTN路由
    A DTN Congestion Mechanism Based on Distributed Storage
    $(formId).autocomplete is not a function
    [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
    ajax提交的中文便会变成乱码
    Ajax原理
    Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.init
    JavaScript 无符号位移运算符 >>> 三个大于号 的使用方法
    普通按钮提交
    jsp的一些基本操作
  • 原文地址:https://www.cnblogs.com/ljl150/p/11789413.html
Copyright © 2011-2022 走看看