zoukankan      html  css  js  c++  java
  • java枚举类型

    定义:它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。(来自百度百科)

    应用场景:1)声明几种HTTP网络请求方式:GRT,POST,PUT,DELETE等;

                  2)声明游戏中的一组道具;

    JDK5.0开始Sun引进了一个全新的关键字enum来定义一个枚举类:

    public abstract class enum extends Object implements Serializable Comparable<T>

    下面是一个典型的枚举类的写法:

    public enum FruitEnum {
    ORANGE, BANANA, APPLE
    };

    1.FruitEnum枚举类很像特殊的class,其枚举值(ORANGE, BANANA, APPLE)是FruitEnum的类对象(类实例):
       而且这些枚举值都是public static final的,也就是我们经常所定义的常量方式,因此枚举类中的枚举值最好全部大写。

    2.我们声明的枚举类都是类库中Enum类的子类(java.lang.Enum<E>),它们继承了这个Enum中的许多有用的方法。

    3.enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java继承的单一性)。

    4.测试:

    package enumtest;
    
    public class EnumTest {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            EnumTest enumTest = new EnumTest();
            
            System.out.println("-------------------------");
            enumTest.tesFruitEnum(FruitEnum.BANANA);
            System.out.println("-------------------------");
            enumTest.testEnumIndex();
            System.out.println("-------------------------");
            enumTest.testFruitEnumValues();
        }
    
        /**
         * 定义一个枚举类型
         */
        public enum FruitEnum {
            ORANGE, BANANA, APPLE
        };
        
        /**
         * 
         * 通过“枚举名.值”取得枚举中的值,可配合switch语句使用
         */
        private void tesFruitEnum(FruitEnum fruitEnum) {
            switch (fruitEnum) {
            case ORANGE:
                System.out.println("I am an ORANGE.");
                break;
            case BANANA:
                System.out.println("I am a BANANA.");
                break;
            case APPLE:
                System.out.println("I am an APPLE.");
                break;
            default:
                System.out.println("I am not FruitEnum.");
                break;
            }
        }
        
        /**
         * 枚举的索引位置,默认从0开始
         */
        private void testEnumIndex()
        {
            System.out.println(FruitEnum.ORANGE.name()+","+FruitEnum.ORANGE.ordinal());
            System.out.println(FruitEnum.BANANA.name()+","+FruitEnum.BANANA.ordinal());
            System.out.println(FruitEnum.APPLE.name()+","+FruitEnum.APPLE.ordinal());
        }
    
        /**
         * FruitEnum枚举中的值
         */
        private void testFruitEnumValues() {
            for(FruitEnum fruitEnum:FruitEnum.values())
            {
                System.out.println(fruitEnum);
            }
        }
    }

     运行结果:

    -------------------------
    I am a BANANA.
    -------------------------
    ORANGE,0
    BANANA,1
    APPLE,2
    -------------------------
    ORANGE
    BANANA
    APPLE

  • 相关阅读:
    [Java5新特性]可变参数
    [Java5新特性]自动装箱/拆箱
    CentOS6.5下安装apache2.2和PHP 5.5.28
    VMware Workstation(虚拟机)v10.0.1 简体中文破解版
    [Android]通过js方法回调部分native报错 Web Console: Uncaught TypeError: Object [object Object] has no method 'xxx'
    Android WebView与JavaScript交互操作(Demo)
    【CSS3 入门教程系列】CSS3 Media Queries 实现响应式设计
    Bootstrap 3支持IE 8遇到的一个小问题
    php文件大小单位转换GB MB KB
    2个比较经典的PHP加密解密函数分享
  • 原文地址:https://www.cnblogs.com/Android9527/p/5394158.html
Copyright © 2011-2022 走看看